WM_DESTROY & WM_NCDESTROY
来源:互联网 发布:jsp中引入js文件 编辑:程序博客网 时间:2024/06/06 09:50
The WM_NCDESTROY message is sent after the child windows have been destroyed. In contrast, WM_DESTROY is sent before the child windows are destroyed.
通过spy++抓取消息也发现,窗口接受到的最后消息是WM_DESTROY 和 WM_NCDESTROY.
截图我就不上传了.日志中弄个图太麻烦了.
所以在WM_NCDESTROY消息到达后,销毁窗口类是最好的时机了.
MFC中CWnd的OnNcDestroy()函数中主要做了以下几件事(OLE Wnd不管):
1. cleanup main and active windows.这些信息主要保存在WinThread中.至于CWinThread后续再研究.
在此过程中,如果是主线程的话,会AfxPostQuitMessage(0);向主线程发送WM_QUIT消息退出主消息循环.
2. cleanup tooltip support. 如果你的窗口支持ToolTip的话,那肯定要delete tool tip 对吧.
3. call default, unsubclass, and detach from the map. 还原回原来的默认处理函数,Dettach Wnd.从HWnd Map中去除.
4. 最好一步,给外部一个可以处理后事的机会.调用虚函数PostNcDestroy().
CWnd在PostNcDestroy()中啥事也没有做.CDialog也并没有重载PostNcDestroy().
而如果是自己负责自己生命周期的窗口类的话,delete掉自己的最好机会莫过于在PostNcDestroy()中delete掉自己了.
而在PostNcDestroy()中delete掉自己的窗口类就要书CFrameWnd和CView
所以,当在设计重载控件的时候,注意一下你要设计的窗口类是自己管理生命周期的呢? 还是有其他类来管理.
over
- WM_DESTROY & WM_NCDESTROY
- WM_DESTROY 和 WM_NCDESTROY
- win32 WM_DESTROY 和 WM_NCDESTROY.
- WM_CREATE ,WM_NCCREATE,WM_DESTROY,WM_NCDESTROY详解
- WM_CREATE ,WM_NCCREATE,WM_DESTROY,WM_NCDESTROY详解
- WM_CREATE ,WM_NCCREATE,WM_DESTROY,WM_NCDESTROY详解
- WM_DESTROY 和 WM_NCDESTROY 消息之间有什么区别? (译)
- What is the difference between WM_DESTROY and WM_NCDESTROY?
- WM_ENDSESSION WM_DESTROY WM_QUIT
- WM_CLOSE,WM_DESTROY接受顺序
- WM_QUIT,WM_CLOSE,WM_DESTROY
- WM_DESTROY、WM_CLOSE和WM_QUIT
- WM_CLOSE、WM_QUIT、WM_DESTROY区别
- WM_DESTROY, WM_CLOSE, WM_QUIT 区别
- WM_CLOSE WM_DESTROY WM_QUIT 区别
- WM_DESTROY ,WM_CLOSE,WM_QUIT
- WM_QUIT,WM_CLOSE,WM_DESTROY .
- WM_CLOSE WM_DESTROY WM_QUIT 区别
- VB.net+工厂方法模式+思考
- 自学Linux--02/06/10
- RICHEDIT EM_SETTEXTEX & EM_REPLACESEL
- haode
- 虚析构函数
- WM_DESTROY & WM_NCDESTROY
- AFX_MANAGE_STATE
- 第一篇博客
- so...
- Windows与VMware下的Linux文件共享方式总结
- 成功必须经过六项修炼
- 想学日语的或是正在学日语的不看后悔死你~超全的有关日语学习的网站地址!!
- lwip -telnet移植
- 《汉字大全》发布0.7版