主要分为以下几个方面:
1.Skin++使用方法
2.使用中注意事项
一. Skin++使用方法
SkinPPWTL.dll、SkinPPWTL.lib、SkinPPWTL.h ,将三个文件及相应皮肤(.ssk)拷贝至工程文件夹下
1.加载Skin++
1).在工程stdafx.h文件中加入#include "SkinPPWTL.h"
//..
#endif // _AFX_NO_AFXCMN_SUPPORT
#include "SkinPPWTL.h" //在这个地方加
#pragma comment(lib,"SkinPPWTL.lib") //或者在(附加依赖项)"Project->Settings->Link->Object/library"中加入SkinPPWTL.lib
//{{AFX_INSERT_LOCATION}}
2). 在APP类文件的InitInstance()中加入初始化语句InitInstance()
BOOL CWwApp::InitInstance()
{ AfxEnableControlContainer();
//…
skinppLoadSkin(_T("blue.ssk"));//blue.ssk为工程文件夹下的皮肤文件
//skinppLoadSkinFromRes();//静态资源加载, 在皮肤.h文件中有函数声明,参数自填
#ifdef _AFXDLL
//…
}
备注:更换皮肤只需要在事件中调用该函数即可。
2.卸载Skin++
在APP类文件的卸载函数ExitInstance()中加入:
skinppExitSkin(); //退出界面库,做清理工作。
二、使用中的注意事项
1. Skin++免费版是只支持ANSI方式,但VS2010在默认情况下编码为UNICODE方式,如果在编译链接时不把编码改为ANSI方式则无法正常生成。
解决方法: 项目 - 属性 - 配置属性 - 常规 - 字符集 - 使用多字节字符集。
2. 项目在使用多字节字符集下编译可能会出现其他的错误,如不能将CString转化为LPCWSTR等。
解决方法:将字符集改回为原来的UNICODE方式,然后skinppLoadSkin(_T("blue.ssk")); 改为skinppLoadSkin("blue.ssk"); 然后在SkinPPWTL.h头文件里定义一个typedef char MYCHAR变量,并替换所有的TCHAR, 并将语句TCHAR_tcscpy(szResImageName, _T("")); 改为strcpy(szResImageName, ""); 即可,编译即可通过。
3. 在UNICODE编码下的使用
官方说法,只有企业版才支持UNICODE。如果您的程序正好不是ANSI。。那么下面的方法可能会对您有所帮助。。一般咱们用SKIN++,只用到了skinppLoadSkin 与skinppExitSkin 。。
如果是UNICODE程序,在编译时会提示LINK skinppLoadSkin 方法错误。
其实只要把SkinPPWTL.h里的
skinppLoadSkin(TCHAR* szSkinFile, BOOL bFromIni = FALSE);
原型改为
skinppLoadSkin(CHAR* szSkinFile, BOOL bFromIni = FALSE);
在调用时
skinppLoadSkin((CHAR*)"vladstudio.ssk");
就OK了。
4. 其有关使用和SkinMagic类似,皮肤DLL都是动态生成的,项目exe都需要DLL。在运行时,需要将四个文件放到程序文件下,在生成了DEBUG文件后,如果想让DEBUG文件中的程序可以直接运行,那就需要将皮肤文件与DLL动态连接库文件都放到DEBUG文件中,RELEASE文件中一样,打包时就将四个文件一起打包.
但Skin++的菜单和下拉框(滑动条)显示正常,使用较方便。
附件:见文件
有关链接:
MFC学习之 SKIN++皮肤使用方法
http://blog.csdn.net/ksp416/article/details/50198781
http://blog.csdn.net/suxinpingtao51/article/details/44036163
http://blog.sina.com.cn/s/blog_6c86952d01013fzd.html
http://www.cnblogs.com/phinecos/archive/2008/04/14/1152696.html
http://www.emsky.net/bbs/archiver/?tid-28229.html