https://www.cnblogs.com/linlf03/archive/2011/11/16/2251318.html

从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起
https://blog.csdn.net/optman/article/details/332277

AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用:用于模块切换时的状态保护,

1.AfxGetStaticModuleState()指向当前模块状态;

2.当前函数调用结束后原模块的状态自动被恢复;

3.用于DLL中所调用MFC函数、类、资源时的模块状态切换;

[MSDN]

By default, MFC uses the resource handle of the main application to load the resource template. If you have an exported function in a DLL, such as one that launches a dialog box in the DLL, this template is actually stored in the DLL module. You need to switch the module state for the correct handle to be used. You can do this by adding the following code to the beginning of the function:

AFX_MANAGE_STATE(AfxGetStaticModuleState( ));

This swaps the current module state with the state returned from AfxGetStaticModuleState until the end of the current scope

也就是说,并不是每一个dll的输出函数前都要调用它,只有在要输出对话框等用到资源时才要调用!

dll中资源是共享的,用这个函数的目的是防止不同的进程修改资源从而产生错误!

缺省情况下MFC使用主应用程序的资源句柄来载入资源模板,而DLL中的资源模板是存在于DLL模板中,

因此要使用这一语句切换到 DLL 。

C++ AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用相关推荐

  1. AFX_MANAGE_STATE(AfxGetStaticModuleState())

    以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的函数开始添加上AFX_MANAGE_STATE (AfxGetStaticModuleState()).一直不明白这样 ...

  2. 从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起

    以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的函数开始添加上AFX_MANAGE_STATE(AfxGetStaticModuleState()).一直不明白这样做 ...

  3. MFC DLL 不能正确调用的问题 + AFX_MANAGE_STATE(AfxGetStaticModuleState());

    今天下午用mfc对话框程序调用另一个mfc dll,这是问题出现了,程序正常运行,但是点击对话框上的按钮并不能调用DLL里面的资源,尝试了各种办法也无法解决,吃完晚饭后,沉下心来重头看代码,发现了这样 ...

  4. Git 和 Github 秘籍

    GitHub秘籍 Git 和 Github 秘籍,灵感来自于 Zach Holman 在 2012 年 Aloha Ruby Conference 和 2013 年 WDCNZ 上所做的演讲:Git ...

  5. MFC的模块状态:从AfxGetApp()和AFX_MANAGE_STATE()看MFC的模块状态

    原文地址:http://hi.baidu.com/rootlife/blog/item/2f37e354ad8cdc5bd10906be.html Introduction 当我们在用MFC编程的时候 ...

  6. dll的概念、dll导出类(转)

    1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与 ...

  7. 我的Dll(动态链接库)学习笔记

    DLL(Dynamic Link Libraries)专题: 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作.可能存在一些模块的功能较为通用,在 ...

  8. 窗口子类化-实例应用

    所谓窗口子类化:改变一个已经存在的窗口实例的性质:消息处理与其他实例属性.   通常在SDK中所谓的窗口子类化就是改变一个窗口函数(如GetWindowLong()和SetWindowLong())通 ...

  9. 动态链接到MFC的DLL(转)

    在讨论关于动态链接到MFC的DLL的模块状态问题之前,先来看一个例子.本例可以通过如下步骤来完成: 1)在VC菜单中File->New新建一个命名为DLLShared的MFC AppWizard ...

最新文章

  1. MindInsight计算图可视设计
  2. Android中Fragment+ViewPager的配合使用
  3. QT中如何才能使用cos,sin等三角函数
  4. PIC16F877矩阵键盘的识别
  5. python 摄像头标定_python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
  6. 关于有序二维矩阵查找和字符串替换的两道算法题
  7. java操作日志记录_通用日志记录(java)
  8. 微软中国:Morro可能将不进入中国市场
  9. Spring Boot 学习之,数据库三 ,事务
  10. 基于环信实现在线聊天功能
  11. 1010 一元多项式求导(C语言)
  12. idea maven sync Cannot resolve xxx 的解决方案
  13. HCIE Security 防火墙URL过滤技术 备考笔记(幕布)
  14. 360cdn能挡住cc攻击_人人用得起的CDN加速服务,可防御CC攻击
  15. java 查找 替换_Java 查找替换Excel数据
  16. 【深入设计模式】装饰模式—什么是装饰模式?装饰模式在源码中的应用
  17. android的一些简单配置修改(2)
  18. 方维互动直播系统(美女、游戏、会议、在线教育、体育、赛事直播系统)
  19. 计算机一级试题上网题收发邮件,计算机等级一级MS Office考题:第一套上网题
  20. html5 frog jump,frog-jump

热门文章

  1. 论文浅尝 | 基于深度强化学习将图注意力机制融入知识图谱推理
  2. bert模型简介、transformers中bert模型源码阅读、分类任务实战和难点总结
  3. 干货 | 搞定用户画像只需5个步骤
  4. Berttransformer
  5. 列表、字典补充点、strJoin方法、set()集合、和深浅拷贝
  6. day27 CRM delete action 嵌入CRM
  7. python语言学习笔记整理
  8. GC之七--gc日志分析工具
  9. C++学习——static
  10. PyTorch中Tensor的基本用法与动手学深度学习的预备知识