2.0版
把corona.smf,SkinMagicLibMD6.lib,SkinMagicLib.h考入程序文件夾中.
在stdafx.h中添加代碼
#include "SkinMagicLib.h"
//#pragma comment(lib, "SkinMagicLibMD6Trial.lib")
#pragma comment(lib, "SkinMagicLibMD6.lib")
/* 當在Project/Setting/General中選擇"Use MFC in a Static Library"時,
需要以下兩條語句:
*/
#pragma comment(linker, "/FORCE:MULTIPLE")
#pragma comment(linker, "/OPT:NOREF")
在主文件添加頭文件
#define COMPILE_MULTIMON_STUBS
#include "multimon.h"
在BOOL CMDIDemoApp::InitInstance()開頭添加
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("Demo") ,
NULL,
NULL ) );
VERIFY( 1 == LoadSkinFile( _T("corona.smf") ) );
在尾部 pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
之前添加
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , _T("MainFrame") ));
SetControlTooltip( pMainFrame->m_wndToolBar.m_hWnd , _T("ToolBar") );
VERIFY( 1 == SetDialogSkin( _T("Dialog") ) );
之後就編譯成功了,繼續爲子窗口重載WM_CREATE或WM_INITDIALOG
在其中添加代碼SetWindowSkin( m_hWnd , _T("MainFrame") );
2.2版
1、下載SkinMagic Toolkit,複製SkinMagicTrial.dll、SkinMagicTrial.lib、SkinMagicLib.h以及皮膚文件corona.smf至項目的目錄下。(這樣比較簡單J,可以在這下載。)
2、在stdafx.h中加入頭文件和庫的引用,如下:
#i nclude "SkinMagicLib.h"
#pragma comment(lib, "SkinMagicTrial.lib")
l 使用SkinMagic
1、 初始化SkinMagic庫:
int __stdcall InitSkinMagicLib( HINSTANCE hInstance,
LPCTSTR lpApplication ,
LPCTSTR lpReserved1,
LPCTSTR lpReserved2 );
在 CxxxApp::InitInstance()中加入初始化SkinMagic庫的代碼:
VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
2、調入皮膚文件:
皮膚的調用有兩種方法,一是直接從皮膚文件中調用,另一種方法是從資源文件中調用,分別說明如下:
1) 從皮膚文件中調用皮膚:
int __stdcall LoadSkinFile( LPCTSTR lpSkinFile );
2)從資源文件中調用皮膚:
int __stdcall LoadSkinFromResource(HMODULE hModule,
LPCTSTR lpSkinName ,
LPCTSTR lpType);
現在CxxxApp::InitInstance()中的代碼如下:
BOOL CxxxApp::InitInstance()
{
VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
VERIFY( 1 == LoadSkinFile("corona.smf"));
AfxEnableControlContainer();
//…..下略
}
3、將皮膚應用到程序上
int __stdcall SetWindowSkin( HWND hWnd , LPCTSTR lpSkinName );
int __stdcall SetDialogSkin( LPCTSTR szSkinName );
1)對話框程序代碼位置:
BOOL CxxxApp::InitInstance()
{
//...上略
m_pMainWnd = &dlg;
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
VERIFY( 1 == SetDialogSkin( "Dialog" ) );
int nResponse = dlg.DoModal();
//…下略
}
2)文檔視圖程序代碼的位置
BOOL CxxxApp::InitInstance()
{
//…上略
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
VERIFY( 1 == SetDialogSkin( "Dialog" ) );
return TRUE;
}
4、釋放SkinMagic資源
void __stdcall ExitSkinMagicLib();
重載應用程序的ExitInstance()函數,添加如下代碼:
int CxxxApp::ExitInstance()
{
ExitSkinMagicLib();
return CWinApp::ExitInstance();
}