如何在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 0;
};

static void END_PUT_DLLRES(UINT macro_flag, HINSTANCE hinst)
{
#ifndef macro_flag
    AfxSetResourceHandle(hinst);
#endif
};
#endif //_DLLRESOURCE_FUNC
#endif    //_MACRO_H

 

转载于:https://www.cnblogs.com/whl2012/p/4759004.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值