本文主要是介绍VS2005 使用SKIN皮肤库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
预处理:
破解版本SKIN 只支持ANSI 而现在的工程一般为UNICODE
修改:
将:SKINPPWTL_API BOOL skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);
改成:SKINPPWTL_API BOOL skinppLoadSkin(CHAR* szSkinFile,BOOL bFromIni = FALSE);
这样 ,此函数便可支持unicode下传递char* 类型参数了
第一步: 将lib、Skin文件夹 拷贝到工程中
第二步: 设置工程属性
1) 属性-》C/C++ 附加包含目录 添加 "lib"
2 ) 属性-》链接器 附加依赖项 添加 “lib/SkinPlusPlusDLL.lib”
第三步: 添加头文件
#inlcude "SkinPPWTL.h"
第四步 : 初始化
在APP的 InitInstance()中 初始化
注意初始化位置 :
SDI程序 在OLE之前初始化
skinppLoadSkin("skin\\XP-Home.ssk"); //初始化SKIN// 初始化 OLE 库if (!AfxOleInit()){AfxMessageBox(IDP_OLE_INIT_FAILED);return FALSE;}
但是,这样初始化后, 程序就使用了SKIN皮肤,但是,我想要的效果是: 默认没有皮肤 ,当点击换肤按钮时,再改变皮肤。
因此, 既要保证初始化,又要开始时无皮肤
方法: 先加载皮肤 初始化, 然后,将皮肤撤销
在APP的 InitInstance()的 最后位置 添加撤销皮肤语句,这样 皮肤虽然撤销了,但同时已经初始化了。
skinppRemoveSkin(); // 清楚SKin皮肤 但此时SKin 已经初始化了,后面可以直接使用return TRUE;
}
第5步: 在需要地方 ,换肤
skinppLoadSkin("skin\\XP-Metallic.ssk"); //金属色
由于 SKIN 使用的是破解版本的 因此有许多限制
这篇关于VS2005 使用SKIN皮肤库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!