解决:AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called

类似的还有:AppMsg - Warning: Destroying non-NULL m_pMainWnd(这是因为你既没有自己delete,也没有调用DestroyWindow)

首先解决第一个,直接列代码:

 1 class SCCApp : public CWinApp
 2
 3 class CMainWindow : public CFrameWnd
 4
 5 BOOL SCCApp::InitInstance()
 6 {
 7     m_pMainWnd = new CMainWindow;
 8     if (!::RegisterHotKey(m_pMainWnd->GetSafeHwnd(), 0x0001, NULL, VK_F1))
 9     {
10         ::MessageBox(NULL, _T("注册F1热键失败!请关闭热键冲突的程序并重启本程序!"),
11             _T("错误"), MB_ICONERROR);
12         delete m_pMainWnd;
13         return FALSE;
14     }
15     m_pMainWnd->ShowWindow(m_nCmdShow);
16     m_pMainWnd->UpdateWindow();
17     return TRUE;
18 }

12行,你直接delete,但该window不会收到WM_DESTROY and WM_NCDESTROY消息,所以无法正确的销毁,替换为:

m_pMainWnd->DestroyWindow();

不需要你手动写delete,这是因为虽然CWnd的PostNcDestroy不会调用delete this,但CFrameWnd的PostNcDestroy会调用delete this。你调用完之后m_pMainWnd会变为NULL,你可以在下面加如下代码验证:

if (m_pMainWnd == NULL)
    std::ofstream os("NULL");

最开始我在m_pMainWnd->DestroyWindow()后面用delete m_pMainWnd来验证发现没有报错,就是因为delete NULL没有任何效果。

时间: 2024-11-03 03:45:49

解决:AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called的相关文章

zencart后台管理中选项名称和选项内容和属性控制页面出错解决办法 WARNING: An Error occurred, please refresh the page and try again

后台管理中选项名称和选项内容和属性控制出现以下错误的解决办法WARNING: An Error occurred, please refresh the page and try again zen cart v1.5.1 的一个bug,重新下载更新的zencart安装包,然后取出以下三个文件替换:admin/attributes_controller.phpadmin/option_names_manager.phpadmin/option_values_manager.php 或者手工修复如

解决configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.

今天给php编译安装Fileinfo的时候,报configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.看了下说是要re2c这个东西. 解决办法: wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download tar zxf re2c-0.13.5.tar.

Android studio 解决libpng warning: iCCP: Not recogni

在Android5.0的源码中编译apk会出现如下的问题 libpng warning: "iCCP: Not recognizing known sRGB profile that has been edited" 原因是新版本的libpng对关于ICCP采用了更严苛的约束 解决方法有三: 降低 libpng 用 imagemagick strip  .png 不提示warning 这里采用第二种,首先下载imagemagick,由于unix的版本安装麻烦就直接下载windows的

Linux SSH 远程登录错误及解决办法 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

[问题] [[email protected]_EXERCISE mnt]# scp [email protected]:/etc/profile.d/motd1.sh /etc/profile.d/ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@

【转】解决警告 warning: directory not found for option

转:http://blog.sina.com.cn/s/blog_6f72ff900101es6x.html 解决方法: 选择项目名称----->Targets----->Build Settings----->Search Paths----->Library Search Paths 删除对应路径 ld: warning: directory not found for option“XXXXXX” 很奇怪,为什么已经从项目中删除了文件和文件夹还是报这个警告呢? 去掉警告的办法

解决:[WARNING] fpm_children_bury(), line 215: child 2736 (pool default) exited on signal 15 SIGTERM after 59.588363 seconds from start

试用Nginx + PHP FastCGI 做WEB服务器,运行了几个月的时间,烦恼的是经常碰到Nginx 502 Bad Gateway 这个问题. 参考了很多修改办法,这个502的问题一直存在,今天打算重装PHP FastCGI到PHP的安装目录里一看,发现PHP的日志文件已经有几十M的大小,打开一看,结果基本全部都是一下的错误: Jan 11 08:54:01.164292 [NOTICE] fpm_children_make(), line 352: child 10088 (pool

解决configure: WARNING: You will need re2c 0.13.4 or later

我在安装rabbitmq php扩展的时候发现 configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. 于是百度找解决方法 wget https://sourceforge.net/projects/re2c/files/0.16/re2c-0.16.tar.gz tar zxf re2c-0.16.tar.gz && cd re2c-0.16 ./confi

zsh解决perl: warning: Setting locale failed.

错误如下: perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard

解决ld: warning: directory not found for option警告

去掉警告的办法如下: 1选择工程, 编译的 (targets) 2选择 Build Settings 菜单 3查找 Library Search Paths 和 Framework Search Paths, 删掉编译报warning的路径即OK