zoukankan      html  css  js  c++  java
  • 如何在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
  • 相关阅读:
    没有spring如何使用注解下篇
    在没有spring框架如何使用注解上篇
    oracle11g里sqldeveloper不能打开的问题
    java代码换行
    枚举接口Enumeration
    java开发环境的搭建(上班笔记01)
    2013.12.12-2013.12.22面试
    2013.12.12-2013.12.20面试
    supervisor superlance
    Laravel 返回日期问题2021-07-23T05:56:03.000000Z
  • 原文地址:https://www.cnblogs.com/whl2012/p/4759004.html
Copyright © 2011-2022 走看看