主要分為以下幾個方面:
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
