📄 skinloadlib.h
字号:
#if !defined (_SKIN_LOAD__)
#define _SKIN_LOAD__
/*********************************************************************
* 函数名称:InitSkinLoad
* 说明: 初始化皮肤动态库
* 入口参数:
* DWORD dwThreadId -- 应用程序的主线程ID,
在App的 InitInstance 函数中调用,用GetCurrentThreadId()获取参数
例: InitSkinLoad(GetCurrentThreadId());
* 返回值:
* int -- 成功:非0
失败:NULL
* 作者: Geng
*********************************************************************/
int __declspec(dllimport) InitSkinLoad(DWORD dwThreadId);
/*********************************************************************
* 函数名称:LoadSkin
* 说明: 装入皮肤文件
* 作者: Geng
*********************************************************************/
bool __declspec(dllimport) LoadSkin(char* cFilePathName);
/*********************************************************************
* 函数名称:ExitSkinLoad
* 说明: 在App类的 ExitInstance函数中调用,释放动态库资源
* 作者: Geng
*********************************************************************/
bool __declspec(dllimport) ExitSkinLoad();
/*************************************************************************************
静态链接动态库使用说明:
需要三个文件:"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 动态库是否存在,不至于造成程序无法运行
**************************************************************************************/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -