如何在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
时间: 2024-12-21 02:10:48

如何在MFC中操作资源句柄的相关文章

WPF MVVM 如何在ViewModel中操作View中的控件事件

(在学习Wpf的时候,做一个小例子,想在TextBox改变后,检验合法性,并弹出提示.在找了很多贴后,发现这个小例子,抄袭过来,仅供参考.) 虽然说MVVM模式下不建议在Viewmodel层中操控View层中控件,但是在某些情况下,比如想要得到某个事件的参数,在Viewmodel层中不太方便实现,这时候就可以用下面的方法了. 在XAML中 1.引用组件并设置 xmlns:Interaction="http://schemas.microsoft.com/expression/2010/inter

如何在MFC中添加对话栏

MFC的运行机制 以及 MFC中的DC、CDC、HDC、句柄、设备上下文 [转]

在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API.你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库 然后你来调用 只不过这个类不是你写的 MFC提供数百个类,最重要的.也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大应用程序的基石. 1>封装特性:构成MFC框架的是MFC类库而MFC类库又是C++的一个类库.这些类封装W

MFC中对于剪切板的简单操作

以ASCII编码的文本为例: 复制操作: char sc[]="要复制的文本"; HGLOBAL hmem=NULL; if (OpenClipboard()) //是否成功打开剪帖板 {     if (EmptyClipboard())//清空成功,则继续     {         hmem=GlobalAlloc(GHND,sizeof(sc));//memalloc strlen+1 \0         char* pmem= (char*)GlobalLock(hmem)

VC++中操作XML(MFC、SDK)转

[转]VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作XML有两个库可以用:MSXML和XmlLite.MSXML又细分了两种接口:DOM和SAX2.XP没自带有XmlLite,只自带有2.x.3.x版的MSXML,不支持SAX2(需要MSXML 4.0以上),所以优先使用DOM.DOM是以COM形式提供的,VC++里调用DOM可以分3种方法:1

MFC中如何在TreeCtrl控件中获取鼠标左键消息时的有效点击位置

MFC中,当在TreeCtrl控件中添加鼠标左键消息时,就意味着,凡是在该控件中点击左键后即会响应鼠标左键的消息,可有时我们只想记下有效的鼠标左键点击的事件,如图所示: 只想在CheckBox中点击鼠标左键时,将已选中的Item的句柄存入到链表中,那么如何只将有效的鼠标左键的消息存入链表中呢? 下面是响应鼠标左键消息时从所有鼠标左键消息都响应到只响应有效的左键消息的三个版本: 当响应鼠标左键的消息时,第一个版本: 获取鼠标的点击位置(注意:此时获取的是针对于当前屏幕的鼠标点击位置,所以需要将其转

如何在MFC DLL中向C#类发送消息

如何在MFC DLL中向C#类发送消息 一. 引言 由于Windows Message才是Windows平台的通用数据流通格式,故在跨语言传输数据时,Message是一个不错的选择,本文档将描述如何在MFC DLL中向C#窗口类发送消息. 二. 实现过程 1. 新建一个基于MFC的DLL工程,在工程作用是用于生成Dll库函数: 2. 在该工程中新增一个类,CMessager: 3. 在头文件中添加代码如下: 1 #define ZS_API extern "C" _declspec (

MFC中注册热键操作--以CHotKeyCtrl设置热键为例

使用CHotKeyCtrl为程序添加热键功能,进行主界面的显示隐藏,类似于老板键,具体操作如下: 第一:获取设置的热键并使用RegisterHotKey进行热键的注册,代码如下: //获取热键键值 CHotKeyCtrl* photk=(CHotKeyCtrl*)GetDlgItem(IDC_HOTKEY1); WORD vkey,fsmoderfiers; photk->GetHotKey(vkey,fsmoderfiers); //注册热键 BOOL r=RegisterHotKey(m_h

如何在js或者jquery中操作EL表达式的一个List集合

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先说明此篇博客看明白了可以干嘛: 就是在js或者jquery中操作一个EL表达式的一个list集合或者复杂类型或者内存地址 首先说明,从el表达式拿到的复杂类型,包括内存地址,js是无法直接进行操作的,所以得转换为简单类型,不是直接拿内存地址操作 eval也操作不了内存地址 我先说明思路:就是先用jstl转换为为简单类型,然后对简单类型做操作,示例不写的复杂,看一下就好: /*最牛的判断方式!!!!!!!*