[MFC美化] Skin++使用详解-使用方法及注意事项

主要分为以下几个方面:

1.Skin++使用方法

2.使用中注意事项

一. Skin++使用方法

SkinPPWTL.dll、SkinPPWTL.libSkinPPWTL.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

原文地址:https://www.cnblogs.com/zwh0214/p/6102942.html