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