文章導(dǎo)讀: [準(zhǔn)備工作] 1、將SkinMagicTrial.dll放置在調(diào)試目錄 2、設(shè)置庫(kù)文件目錄,在項(xiàng)目[連接器]的[附加依賴項(xiàng)]中加入庫(kù)SkinMagicTrial.lib 3、在項(xiàng)目的stdafx.h文件中加入頭文件 #include "SkinMagicLib.h" [創(chuàng)建過程] 1、初始化SkinMagic庫(kù):
[準(zhǔn)備工作]
1、將SkinMagicTrial.dll放置在調(diào)試目錄
2、設(shè)置庫(kù)文件目錄,在項(xiàng)目[連接器]的[附加依賴項(xiàng)]中加入庫(kù)SkinMagicTrial.lib
3、在項(xiàng)目的stdafx.h文件中加入頭文件 #include "SkinMagicLib.h"
[創(chuàng)建過程]
1、初始化SkinMagic庫(kù):
要使用SkinMagic,這一步必不可少。在應(yīng)用程序類的InitInstance()函數(shù)中行加入如下代碼(粗體部分):
CWinApp::InitInstance();
VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL ,
NULL, NULL ));
說(shuō)明:
int InitSkinMagicLib( //初始化SkinMagic工具庫(kù)
HINSTANCE hInstance, //應(yīng)用程序句柄
char* szApplication , //皮膚文件中定義的應(yīng)用程序名,置為NULL即可
char* szRegCode, //SkinMagic的使用注冊(cè)碼。若無(wú)置為NULL
char* szReserved2 //保留位,為NULL
);
2、調(diào)入皮膚文件:
皮膚的調(diào)用有兩種方法,一是直接從皮膚文件中調(diào)用,另一種方法是從資源文件中調(diào)用,分別說(shuō)明如下:
1)從皮膚文件中調(diào)用皮膚:緊接上句,加入如下代碼
VERIFY( 1 == LoadSkinFile("corona.smf"));
2)從資源文件中調(diào)用皮膚:
VERIFY(1 == LoadSkinFromResource(NULL,"FUTURA","skin"));
說(shuō)明:
int LoadSkinFromResource(
HMODULE hModule, //包含皮膚文件的模塊句柄,若NULL表面在本模塊中
char* lpSkinName , //皮膚資源的名稱
char* lpType); //資源的類型
3、為窗口添加皮膚:
1)為標(biāo)準(zhǔn)窗口(擁有標(biāo)題欄、系統(tǒng)菜單、可變大小等特征,比如文檔/視圖結(jié)構(gòu)和有菜單的對(duì)話框)添加皮膚,通常用于主窗口。在應(yīng)用程序類的InitInstance()函數(shù)的底部加入如下代碼:
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
說(shuō)明:
int SetWindowSkin(
HWND hWnd, //要使用皮膚的窗口句柄
char* lpSkinName //為skinFrameWnd對(duì)象指定的名稱
);
2)為對(duì)話框添加皮膚
在對(duì)話框顯示之前調(diào)用,通常在應(yīng)用程序初始化函數(shù)中調(diào)用
VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
VERIFY( 1 == SetDialogSkin( "Dialog" ) );
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
說(shuō)明:
int SetDialogSkin(
char* lpSkinName //為skinFrameWnd對(duì)象指定的名稱
);
使用該函數(shù)后,以后程序創(chuàng)建的對(duì)話框都將使用該皮膚,但對(duì)話框大小不可變。
3)為單個(gè)對(duì)話框窗口添加皮膚,例如在對(duì)話框視圖中:重載對(duì)話框視圖的創(chuàng)建函數(shù)OnCreate,加入如下代碼:
VERIFY( 1 == SetSingleDialogSkin( m_hWnd, "Dialog" ) );
EnableWindowScrollbarSkin( m_hWnd , SB_BOTH );
說(shuō)明:
int SetSingleDialogSkin(
HWND hWnd, //要使用皮膚的窗口句柄
char* lpSkinName //為skinFrameWnd對(duì)象指定的名稱
);
int EnableWindowScrollbarSkin( //為滾動(dòng)條添加皮膚
HWND hWnd, //要使用皮膚的窗口句柄
int* fnBar //要使用皮膚的滾動(dòng)條,SB_BOTH表明是橫豎都是用皮膚
);
4、釋放SkinMagic資源
重載應(yīng)用程序的ExitInstance()函數(shù),添加如下代碼:
ExitSkinMagicLib();