该问题产生的原因为:创建类型为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())进行适当的句柄转换。

ASSERT(m_hWnd == hWndOrig) - 解决之的更多相关文章

  1. 多线程中遇到ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);怎么解决

    XP下用VC开发的程序,在一个主线程调用3   个线程,线程之间要共享数据,结果总出现wincore.cpp   line   980   ASSERT(pMap-> LookupPermane ...

  2. duilib学习 --- 360demo 学习

    我想通过360demo的学习,大概就能把握duilib的一般用法,同时引申出一些普遍问题,和普遍解决方法.并在此分享一些链接和更多内容的深入学习..... 原谅我是一个菜鸟,什么都想知道得清清楚楚.. ...

  3. duilib底层机制剖析:窗体类与窗体句柄的关联

    转载请说明原出处,谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术.这些技术都是为了解决c++封装的窗体类与窗体句柄的关联问题. 这里是三篇关于thunk技术 ...

  4. 走出MFC子类化的迷宫

    走出MFC子类化的迷宫 KEY WORDS:子类化 SUBCLASSWINDOW  MFC消息机制 许多Windows程序员都是跳过SDK直接进行RAD开发工具[或VC,我想VC应不属于RAD]的学习 ...

  5. duilib底层机制剖析:窗口类与窗口句柄的关联

    转载请说明原出处.谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术. 这些技术都是为了解决c++封装的窗口类与窗口句柄的关联问题. 这里是三篇关于thunk技 ...

  6. TeamTalk源码分析(十一) —— pc客户端源码分析

           --写在前面的话  在要不要写这篇文章的纠结中挣扎了好久,就我个人而已,我接触windows编程,已经六七个年头了,尤其是在我读研的三年内,基本心思都是花在学习和研究windows程序上 ...

  7. DuiLib(一)——窗口及消息

    最近看了下开源界面库duilib的代码,写几篇相关的文章.网上已经有好多相关的文章了,我这里只是记录自己的学习过程,写到哪里算哪里,权当自娱自乐. duilib是一轻量级的direcui界面库,所谓d ...

  8. DirectUI实现原理

    一,概念 传统的Windows窗口程序对每一个控件都会创建一个句柄,而DUI技术奖所有控件都绘制在一个窗体上,这些控件的逻辑和绘图方式必须自己进行编写和封装,所以这些控件都是无句柄的. DUI技术的实 ...

  9. duilib基本框架

    最近我一个同学在项目中使用到了duilib框架,但是之前并没有接触过,他与我讨论这方面的内容,看着官方给出的精美的例子,我对这个库有了很大的兴趣,我自己也是初学这个东东,我在网上花了不少时间来找相关的 ...

随机推荐

  1. [Android] 给图像加入相框、圆形圆角显示图片、图像合成知识

        前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和加入水印,继续我的"随手拍"项目完毕给图片加入相框.圆形圆角显示图片和图像合 ...

  2. JAVA加解密 -- 对称加密算法与非对称加密算法

    对称加密算法:双方必须约定好算法 DES 数据加密标准:由于不断地被破解 自98年起就已经逐渐放弃使用 AES 目前使用最多的加密方式,官方并未公布加密方式已被破解,替代DES 实现和DES非常接近 ...

  3. docker实战——Docker本地私有镜像仓库Harbor搭建及配置

    Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registr ...

  4. Mybatis学习记录(二)----mybatis开发dao的方法

    1  SqlSession使用范围 1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将Sq ...

  5. DLL内存分配与共享

    一旦DLL的文件映像被映射到调用进程的地址空间中,DLL的函数就可以供进程中运行的所有线程使用.实际上,DLL几乎将失去它作为DLL的全部特征.对于进程中的线程来说,DLL的代码和数据看上去就像恰巧是 ...

  6. python 爬取王者荣耀高清壁纸

    代码地址如下:http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  7. 锁定窗口,禁止更新的win32函数

    [DllImport("user32.dll", EntryPoint = "LockWindowUpdate", SetLastError = true, E ...

  8. sklearn-GBDT 调参

    1. scikit-learn GBDT类库概述 在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegre ...

  9. 收藏 Silverlight中子窗体关闭刷新父窗体(转载)

        public partial class MainPage : UserControl    {        public MainPage()        {            In ...

  10. unity, 弹出panel一定要放在UI Hierarchy的底端

    如上图,buyPanel放在最底端,为的是它弹出时屏蔽所有其它UI的消息.