📄 skinloadlib.h
字号:
/**********************************************************************************************
作者:耿海增
作者声明:
此代码完全是作者所写,作者保留一切权利。可以随意传播、使用,但是请保持文档的完整。
本程序不得用于商业用途。作者不承担由使用本程序可能引起的任何问题。
如果您有什么好的建议、意见,欢迎和我联系。
如果您打算在自己的自由软件中使用,希望能通知我,这些将成为我继续开发的动力
联系方式: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
失败:NULL
* 作者: 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 + -