您的位置:首页 > 其它

MFC使用Skin++

2012-05-12 13:11 211 查看
一.使用皮肤

1.将SkinPPWTL.lib 、skinppwtl.dll 、SkinPPWTL.h三个文件及相应皮肤(**.ssk)拷贝至工程文件夹下;一般还要将这些文件放在Debug文件夹下。

2.在StdAfx.h文件中加入#include "SkinPPWTL.h" 和#pragam comment(lib,"SkinPPWTL.lib")

[cpp]
view plaincopyprint?

//..
#endif // _AFX_NO_AFXCMN_SUPPORT

#include "SkinPPWTL.h" //在这个地方加

#pragma comment(lib,"SkinPPWTL.lib")

//{{AFX_INSERT_LOCATION}}
//..

[cpp]
view plaincopyprint?

BOOL CWwApp::InitInstance()
{

AfxEnableControlContainer();

//…
skinppLoadSkin(_T("blue.ssk"));//blue.ssk为项目下的皮肤文件

#ifdef _AFXDLL

//…
}

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啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: