ASSERT(m_hWnd == hWndOrig) - 解决之
2024-09-25 19:43:14
该问题产生的原因为:创建类型为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())进行适当的句柄转换。
最新文章
- Angular指令渗透式理解
- node.js实用小模块
- PHP MYSQL单向同步方案
- Leetcode 69 Sqrt(x) 二分查找(二分答案)
- J2EE分布式架构及MySQL交流群
- 20145211《Java程序设计》第5周学习总结——独上高楼,望尽天涯路
- iOS9的适配
- 使用Busybox-1.2.0制作根文件系统
- Min Stack 解答
- HTML5 &; CSS3 初学者指南(4) – Canvas使用
- Redis Codis 部署安装
- .NET平台下使用MongoDB入门教程
- 如何创建数据库以及MySQL增删改查命令的简单运用
- xp密钥-资源分享
- Spring Security(一):官网向导翻译
- spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法
- 浅谈C#中的 async await 以及对线程相关知识的复习
- Cannot find type definition file for '.svn'
- xpath的学习
- 2015 UESTC 搜索专题F题 Eight Puzzle 爆搜