如何获取动态库中对话框相关资源,避免因资源问题报错?
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 0; }; static void END_PUT_DLLRES(UINT macro_flag, HINSTANCE hinst) { #ifndef macro_flag AfxSetResourceHandle(hinst); #endif }; #endif //_DLLRESOURCE_FUNC #endif //_MACRO_H
时间: 2024-12-21 02:10:48