该问题产生的原因为:创建类型为regular dll 的MFC dll中的窗口创建与其它DLL或EXE中的窗口创建混乱。

比如:dll1 中函数 fun1() 调用 dll2 中函数 fun2(),在fun2 ()中创建了窗口,但是窗口销毁的时候,又是在dll2中。。或者是其它情况。

查找此类问题的原因就是查看窗口的创建过程,而且创建窗口的函数由谁来调用。

根本原因:

MFC在创建窗口的时候,会使用AfxGetModuleHandle来获取HINSTANCE句柄,而一般在创建窗口的时候, 我们会使用AFX_MANAGE_STATE(AfxGetStaticModuleState())进行将HINSTANCE进行设置,设置成当前的DLL HINSTANCE句柄。所以,如果创建和销毁的时候,不在同一个DLL或EXE中进行,就会产生该问题。

解决方案:

1. 查找窗口创建与销毁函数。

2.了解其创建与销毁函数调用过程。

3.确认其是否在同一个DLL或EXE中调用。

4.如果不在,要修改代码,使之在同一个DLL或EXE中,可以使用AFX_MANAGE_STATE(AfxGetStaticModuleState())进行适当的句柄转换。

最新文章

  1. Angular指令渗透式理解
  2. node.js实用小模块
  3. PHP MYSQL单向同步方案
  4. Leetcode 69 Sqrt(x) 二分查找(二分答案)
  5. J2EE分布式架构及MySQL交流群
  6. 20145211《Java程序设计》第5周学习总结——独上高楼,望尽天涯路
  7. iOS9的适配
  8. 使用Busybox-1.2.0制作根文件系统
  9. Min Stack 解答
  10. HTML5 & CSS3 初学者指南(4) – Canvas使用
  11. Redis Codis 部署安装
  12. .NET平台下使用MongoDB入门教程
  13. 如何创建数据库以及MySQL增删改查命令的简单运用
  14. xp密钥-资源分享
  15. Spring Security(一):官网向导翻译
  16. spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法
  17. 浅谈C#中的 async await 以及对线程相关知识的复习
  18. Cannot find type definition file for '.svn'
  19. xpath的学习
  20. 2015 UESTC 搜索专题F题 Eight Puzzle 爆搜

热门文章

  1. 利用github和git命令,将本地项目共享到服务器上
  2. stat,查看文件属性
  3. JSONObject和JSONArray(json-lib-2.4)的基本用法
  4. 【 D3.js 入门系列 --- 5 】 怎样加入坐标轴
  5. js canvas画柱状图 没什么高端的 就是一篇偶尔思路的
  6. java泛型 7 泛型的基本介绍和使用
  7. C#运用反射调用其他程序集中的代码
  8. Zabbix触发器函数(取前后差值)
  9. Python 的错误和异常处理
  10. 【MyBatis学习14】MyBatis和Spring整合