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