一.使用皮肤
1.将SkinPPWTL.lib 、skinppwtl.dll 、SkinPPWTL.h三个文件及相应皮肤(**.ssk)拷贝至工程文件夹下;一般还要将这些文件放在Debug文件夹下。
2.在StdAfx.h文件中加入#include "SkinPPWTL.h" 和#pragam comment(lib,"SkinPPWTL.lib")
- //..
- #endif // _AFX_NO_AFXCMN_SUPPORT
- #include "SkinPPWTL.h" //在这个地方加
- #pragma comment(lib,"SkinPPWTL.lib")
- //{{AFX_INSERT_LOCATION}}
- //..
3.在BOOL CXXApp::InitInstance()函数中加入:
- BOOL CWwApp::InitInstance()
- {
- AfxEnableControlContainer();
- //…
- skinppLoadSkin(_T("blue.ssk"));//blue.ssk为项目下的皮肤文件
- #ifdef _AFXDLL
- //…
- }
注:以上假定(假定已经将blue.ssk皮肤放在了工程文件夹下),如果不是请更改路径设置。
5.在工程中添加现有项-》头文件SkinPPWTL.h
二.卸载Skin++
在程序的卸载函数中加入ExitInstance()
skinppExitSkin();
三、vs2003以上容易遇到的问题
今天想综合应用下这几天学习的东西,就在Visual C++ 2010 环境下使用了SKIN++给软件提供换皮肤主题的功能,开始一切正常,已经将换肤子菜单添加到系统菜单中,后在做背景贴图的时候,想将出错提示的MessageBox()更换为在WIN7、Vista环境下支持的TaskDialog对象,就将项目的字符集更改为了UNICODE字符集,这下好了,因为用到了skinppLoadSkin 与skinppExitSkin 方法,在编译时老师提示错误:LINK skinppLoadSkin 方法错误!
后来终于找到了解决方法,其实很简单:打开skinPPWTL.h头文件,
将skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);
原型改为skinppLoadSkin(CHAR* szSkinFile,BOOL bFromIni = FALSE);
即去掉那个字母T,在调用时,去掉_T(),如将skinppLoadSkin(_T("skin//redstar.ssk"));
更改为skinppLoadSkin("skin//redstar.ssk");
就OK啦!