界面皮肤

来源:互联网 发布:以太域名申请 编辑:程序博客网 时间:2024/06/10 19:51

SkinMagic(动态库方法,需要携带DLL链接库):

只适用于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();