只适用于ANSI 版本,不适用于 Unicode 版本,所以VS2010需要设置字符集(Character Set)为非Unicode,选择(Not Set)
1.复制 SkinMagicTrial.dll、SkinMagicTrial.lib、SkinMagicLib.h 以及皮肤文件 *.smf 至工程目录下
2.stdafx.h中添加代码:
#include "SkinMagicLib.h"
#pragma comment(lib, "SkinMagicTrial.lib")
3.、在 CXXXXXApp::InitInstance() 函数中添加代码:
对话框代码:
CCListCtrlDlg dlg;//原有代码
m_pMainWnd = &dlg;//原有代码
VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
VERIFY( 1 == LoadSkinFile("xpblue.smf"));
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
VERIFY( 1 == SetDialogSkin( "Dialog" ) );
INT_PTR nResponse = dlg.DoModal();//原有代码
文档视图类代码:
m_pMainWnd->ShowWindow(SW_SHOW); //原有代码
m_pMainWnd->UpdateWindow(); //原有代码
VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
VERIFY( 1 == LoadSkinFile(_T("kromo.smf")));
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , _T("MainFrame") ));
VERIFY( 1 == SetDialogSkin( _T("Dialog") ) );
4.在 CXXXXXApp::ExitInstance() 函数中添加代码:
ExitSkinMagicLib();
Skin++(动态库方法,需要携带DLL链接库):
只适用于ANSI 版本,不适用于 Unicode 版本,所以VS2010需要设置字符集(Character Set)为非Unicode,选择(Not Set)
1、复制 SkinPlusPlusDLL.dll、SkinPlusPlusDLL.lib、SkinPlusPlus.h 以及皮肤文件 *.ssk 至工程目录下;
2.stdafx.h中添加代码:
#include "SkinPlusPlus.h"
//#pragma comment(lib, "SkinPlusPlusDLL.lib")
如果出错,则到SkinPlusPlus.h中修改
#pragma comment(lib,"SkinPlusPlusDLL.lib") 代码
3.、在 CXXXXXApp::InitInstance() 函数中添加代码:
对话框代码:
InitializeSkin(_T("XPCorona.ssk"));
int nResponse = dlg.DoModal(); //原有代码
文档视图类代码:
m_pMainWnd->ShowWindow(SW_SHOW); //原有代码
m_pMainWnd->UpdateWindow(); //原有代码
InitializeSkin(_T("XPCorona.ssk"));
4.在 CXXXXXApp::ExitInstance() 函数中添加代码:
ExitSkin();
Skin++(静态方法,不需要携带DLL链接库,但需要携带皮肤文件)://不支持Unicode
1.复制 SkinPPD6.lib、SkinPPR6.lib、SkinPPD8.lib, SkinPPR8.lib, SkinPPWTL.h 以及皮肤文件 *.ssk 至工程目录下;
2.stdafx.h中添加代码:
#include "SkinPPLIB/SkinPPWTL.h"
并修改SkinPPWTL.h中的代码SkinPP/SkinPPR8.lib为SkinPPLIB/SkinPPD6.lib
#if (_MSC_VER < 1299) // for VC6.0
#ifdef _DEBUG
#pragma comment(lib, "SkinPPLIB/SkinPPD6.lib")
#else
#pragma comment(lib, "SkinPPLIB/SkinPPR6.lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "SkinPPLIB/SkinPPD8.lib")
#else
#pragma comment(lib, "SkinPPLIB/SkinPPR8.lib")
#endif
3.在 CXXXXXApp::InitInstance() 函数中添加代码:加在int nResponse = dlg.DoModal();前面
skinppLoadSkin(_T("vladstudio.ssk"));
如果使用VC6.0则会报错:error C2065: '_tcscpy_s' : undeclared identifier
修改 _tcscpy_s(szResImageName, _MAX_FNAME, _T(""));为_tcscpy(szResImageName, _T(""));
4、在int CXXXXXXApp::ExitInstance() 中添加skinppExitSkin();
5、把控件(如CEdit)添加成变量后,点击右键会崩溃,错误原因在DDX_Control(pDX, IDC_EDT_TEXT, MyEDT);将这句改成MyEDT= (CEdit*)GetDlgItem(IDC_EDT_TEXT);即可,定义CEdit* MyEDT;
VCLSkin(只适用于对话框,不适用于单文档、多文档,支持ANSI/UNICODE):
1.复制 CSySkin.h、CSySkin.cpp、Skin.dll 以及皮肤文件 *.skn 至工程目录下
2.VC中新建个文件夹名为VCLSkin,将CSySkin.h、CSySkin.cpp放在这里
3.在CXXXXXApp类中,定义一个CSySkin类的对象,如:CSySkin skin
4.在 CXXXXXApp::InitInstance() 函数中加入代码:
从文件加载:
skin.LoadDLLFromPath(_T("Skin.dll"));
skin.LoadSkinFromPath(_T("Macos01.skn"));
skin.InstallSkin();
从资源加载:
skin.LoadDLLFromRes(IDR_VCLSKIN_DLL, _T("VCLSKIN_DLL"));
skin.LoadSkinFromRes(IDR_VCLSKIN_SKIN, _T("VCLSKIN_SKIN"));
skin.InstallSkin();
5.在 CXXXXXApp::ExitInstance() 函数中加代码:
skin.UnInstallSkin(TRUE);
或者
skin.UnInstallSkin();