?? skinloadlib.h
字號:
/**********************************************************************************************
作者:耿海增
作者聲明:
此代碼完全是作者所寫,作者保留一切權利??梢噪S意傳播、使用,但是請保持文檔的完整。
本程序不得用于商業用途。作者不承擔由使用本程序可能引起的任何問題。
如果您有什么好的建議、意見,歡迎和我聯系。
如果您打算在自己的自由軟件中使用,希望能通知我,這些將成為我繼續開發的動力
聯系方式:genghaizeng@163.com
注意:使用時必須鏈接正確的版本,SDI/MDI中,Debug版的Dll只能在Debug版下運行,Release版的Dll
只能在Release版下運行
軟件更新: 0.3 版
1、增加MDI支持
***********************************************************************************************/
/*******************靜態鏈接動態庫使用說明*************************************************
需要三個文件:"SkinLoadLib.h","SkinLoad.lib","SkinLoad.dll"
1、添加 "SkinLoadLib.h"、"SkinLoad.lib"文件到工程中
2、在App類中包含頭文件:
#include "SkinLoadLib.h"
3、在App類的 InitInstance()函數中初始化動態庫,加載皮膚文件:
InitSkinLoad(GetCurrentThreadId());
LoadSkin("xp_normal.skin"); //可以放在任何地方,如果在不同的文件中,要包含頭文件
4、在App類的 ExitInstance() 中卸載動態庫,釋放使用的資源:
ExitSkinLoad();
說明:這樣使用方便,缺點是程序運行時必須保證 SkinLoad.dll 文件存在,否則程序無法運行
*************************************************************************************/
/*****************動態加載動態庫使用說明****************************************************
1、 在App類的 InitInstance()函數中加載動態庫。
定義一個變量保存加載的動態庫句柄,可以是全局的,也可以是App類的成員變量
HINSTANCE m_hDllSkin;
m_hDllSkin = LoadLibrary("SkinLoad.dll");
2、在App類的 InitInstance()函數中調用初始化函數和加載皮膚文件的函數
if(m_hDllSkin != NULL)
{
typedef int (* INITSKIN)(DWORD dwThreadId);
typedef bool (* LOADSKIN)(char* cPath);
INITSKIN pInitSkin = (INITSKIN)GetProcAddress(m_hDllSkin,"InitSkinLoad");
LOADSKIN pLoadSkin = (LOADSKIN)GetProcAddress(m_hDllSkin,"LoadSkin");
if(pInitSkin != NULL && pLoadSkin != NULL)
{
(*pInitSkin)(GetCurrentThreadId());
(*pLoadSkin)("xp_normal.skin");
}
}
3、在App類的 ExitInstance() 中卸載動態庫
if(m_hDllSkin != NULL)
{
typedef bool (* EXITSKIN)();
EXITSKIN pExitSkin = (EXITSKIN)GetProcAddress(m_hDllSkin,"ExitSkin");
if(pExitSkin != NULL)
{
(*pExitSkin)();
}
FreeLibrary(m_hDllSkin);
}
說明:這樣使用比較麻煩,要手動加載動態庫,還要自己獲取函數指針再用。但是這樣可以
在程序中判斷所需的 SkinLoad.dll 動態庫是否存在,不至于造成程序無法運行
**************************************************************************************/
#if !defined (_SKIN_LOAD__)
#define _SKIN_LOAD__
/*********************************************************************
* 函數名稱:InitSkinLoad
* 說明: 初始化皮膚動態庫
* 入口參數:
* DWORD dwThreadId -- 應用程序的主線程ID,
在App的 InitInstance 函數中調用,用GetCurrentThreadId()獲取參數
例: InitSkinLoad(GetCurrentThreadId());
* 返回值:
* int -- 成功:非0
失?。篘ULL
* 作者: Geng
*********************************************************************/
int InitSkinLoad(DWORD dwThreadId);
/*********************************************************************
* 函數名稱:InitSkinLoadS
* 說明: 靜態鏈接時使用
* 入口參數:
* HINSTANCE hInst -- 程序句柄
例:InitSkinLoadS(AfxGetInstanceHandle());
* 返回值:
* int --
*********************************************************************/
int InitSkinLoadS(HINSTANCE hInst);
/*********************************************************************
* 函數名稱:LoadSkin
* 說明: 裝入皮膚文件
* 作者: Geng
*********************************************************************/
bool LoadSkin(char* cFilePathName);
/*********************************************************************
* 函數名稱:SetButtonIcon
* 說明: 設置按鈕圖標
* 作者: Geng
*********************************************************************/
bool SetButtonIcon( HWND hWnd, //按鈕句柄
HICON hIconIn, //MouseOn 時的圖標句柄
int cxIcon = 16, //圖標寬度
int cyIcon = 16, //圖標高度
int nMargin = 3 , //圖標離按鈕邊的距離
int nAlign = 0 , //對齊方式,0:水平、1:豎直
HICON hIconOut= NULL);//MouseOut時的圖標句柄
/*********************************************************************
* 函數名稱:SetButtonCursor
* 說明: 設置Button的光標。如果 hWnd 為空,則設置所有Button的光標
如果想取消設置,SetButtonCursor(NULL)即可。
* 作者: Geng
*********************************************************************/
bool SetButtonCursor(HCURSOR hCursor,HWND hWnd = NULL);
/*********************************************************************
* 函數名稱:SetDialogCursor
* 說明: 設置Button的光標。如果 hWnd 為空,則設置所有 Dialog 的光標
如果想取消設置,SetDialogCursor(NULL)即可。
* 作者: Geng
*********************************************************************/
bool SetDialogCursor(HCURSOR hCursor,HWND hWnd = NULL);
/*********************************************************************
* 函數名稱:Skin_GetDialogBkColor
* 說明: 獲取當前皮膚文件的對話框背景色
*********************************************************************/
unsigned long Skin_GetDialogBkColor();
/*********************************************************************
* 函數名稱:ExitSkinLoad
* 說明: 在App類的 ExitInstance函數中調用,釋放動態庫資源
* 作者: Geng
*********************************************************************/
bool ExitSkinLoad();
/*********************************************************************
* 函數名稱:SetHeaderOwnerDraw
* 說明: 如果Header采用自繪方式,就不采用皮膚了
* 時間 : 2004-03-07 16:10:02
*********************************************************************/
bool SetHeaderOwnerDraw(HWND hWnd,bool bIsOwnerDraw);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -