如何在MFC中操作资源句柄

时间:2023-03-10 07:48:41
如何在MFC中操作资源句柄

如何获取动态库中对话框相关资源,避免因资源问题报错?

AfxGetResourceHandle用于获取当前资源模块句柄
AfxSetResourceHandle则用于设置程序目前要使用的资源模块句柄。

#ifndef _MACRO_H
#define _MACRO_H #define CLASS_EXPORT __declspec(dllexport) //导出类
#define API_EXPORT __declspec(dllimport) //导出函数 //获取动态库中对话框相关资源,避免因资源问题报错 #ifndef _UNICODE
#define GS_LPCSTR LPCSTR
#else
#define GS_LPCSTR LPCWSTR
#endif #ifndef __DLLRESOURCE_FUNC
#define __DLLRESOURCE_FUNC
#define MCR_BEGIN_GET_DLLRES(macro_flag, dllname) \
BEGIN_GET_DLLRES(macro_flag, dllname);
#define MCR_END_PUT_DLLRES(macro_flag, hinst) \
END_PUT_DLLRES(macro_flag, hinst); HINSTANCE BEGIN_GET_DLLRES(UINT macro_flag, GS_LPCSTR dllname);
VOID END_PUT_DLLRES(UINT macro_flag, HINSTANCE hinst); static HINSTANCE BEGIN_GET_DLLRES(UINT macro_flag, GS_LPCSTR dllname)
{
#ifndef macro_flag
HINSTANCE hinstOld = AfxGetResourceHandle();
#ifdef _DEBGU
AfxSetResourceHandle(GetModuleHandle(dllname));
#else
AfxSetResourceHandle(GetModuleHandle(dllname));
#endif
return hinstOld;
#endif
return ;
}; static void END_PUT_DLLRES(UINT macro_flag, HINSTANCE hinst)
{
#ifndef macro_flag
AfxSetResourceHandle(hinst);
#endif
};
#endif //_DLLRESOURCE_FUNC
#endif //_MACRO_H