windows窗口关闭的消息响应机制
2013-08-01 21:45
351 查看
1、当你按下了“关闭”按钮或选取了“退出”菜单项之后,WM_CLOSE消息被发送给了应用程序的窗口处理过程函数。该函数对该消息的缺省处理仅为调用DestroyWindow()API函数,导致窗口被销毁。
2、当窗口的客户区被销毁的时候WM_DESTROY消息被发给了应用程序的窗口处理过程。程序员可以在此释放他自己分配的与窗口客户区相关的资源,而窗口过程函数缺省的处理仅为调用PostQuitMessage()函数,这将导致WM_QUIT消息被送进应用程序的消息队列。
3、随后窗口的非客户区(包括菜单栏、标题栏、状态栏等)被销毁,此时WM_NCDESTROY消息被发送给了应用程序的窗口过程。这个消息也是窗口过程处理的最后一个消息,程序员可以在这里释放他自己分配的而一直没有释放的内存。使用了MFC创建的应用程序往往要在这个消息响应函数当中进行一些释放内存和资源的工作。
4、而应用程序的消息检测函数GetMessage()一旦检索到WM_QUIT消息,就会返回False,从而结束消息循环,并且让应用程序的WinMain()函数返回,从而结束应用程序。因此应用程序的窗口处理过程是不可能处理到这条WM_QUIT消息的。
5、综上所述,如果我们是用SDK方法编写应用程序而又不需要在程序结束的时候释放用new及其他内存分配函数显式分配的内存的话,我们完全可以直接通过向应用程序发送WM_QUIT消息让程序退出。
6、如果我们利用了MFC创建应用程序则最好通过发送WM_CLOSE消息让应用程序结束。因为MFC往往要在最后时刻进行一些清理工作。
————————————————————————————————————————————————
对话框退出调用什么函数主要看你按哪个按钮退出的了,一般就三种情况:
(1)点击IDOK按钮退出:先调用OnOK(),然后是OnDestory(),最后是PostNcDestroy()
(2)点击IDCANCEL按钮退出:先调用OnCancel(),然后是OnDestory(),最后是PostNcDestroy()
(3)点击右上角的关闭按钮退出:先OnClose(),然后是OnCancel(),再然后是OnDestory() ,最后是PostNcDestroy()
2、当窗口的客户区被销毁的时候WM_DESTROY消息被发给了应用程序的窗口处理过程。程序员可以在此释放他自己分配的与窗口客户区相关的资源,而窗口过程函数缺省的处理仅为调用PostQuitMessage()函数,这将导致WM_QUIT消息被送进应用程序的消息队列。
3、随后窗口的非客户区(包括菜单栏、标题栏、状态栏等)被销毁,此时WM_NCDESTROY消息被发送给了应用程序的窗口过程。这个消息也是窗口过程处理的最后一个消息,程序员可以在这里释放他自己分配的而一直没有释放的内存。使用了MFC创建的应用程序往往要在这个消息响应函数当中进行一些释放内存和资源的工作。
4、而应用程序的消息检测函数GetMessage()一旦检索到WM_QUIT消息,就会返回False,从而结束消息循环,并且让应用程序的WinMain()函数返回,从而结束应用程序。因此应用程序的窗口处理过程是不可能处理到这条WM_QUIT消息的。
5、综上所述,如果我们是用SDK方法编写应用程序而又不需要在程序结束的时候释放用new及其他内存分配函数显式分配的内存的话,我们完全可以直接通过向应用程序发送WM_QUIT消息让程序退出。
6、如果我们利用了MFC创建应用程序则最好通过发送WM_CLOSE消息让应用程序结束。因为MFC往往要在最后时刻进行一些清理工作。
————————————————————————————————————————————————
对话框退出调用什么函数主要看你按哪个按钮退出的了,一般就三种情况:
(1)点击IDOK按钮退出:先调用OnOK(),然后是OnDestory(),最后是PostNcDestroy()
(2)点击IDCANCEL按钮退出:先调用OnCancel(),然后是OnDestory(),最后是PostNcDestroy()
(3)点击右上角的关闭按钮退出:先OnClose(),然后是OnCancel(),再然后是OnDestory() ,最后是PostNcDestroy()
相关文章推荐
- windows窗口关闭的消息响应机制
- Windows 消息响应机制之二:消息 .
- windows的窗口消息机制(读windows核心编程笔记):基础篇
- windows基础编程----第三篇(窗口的消息处理机制)
- 【转】WINDOWS消息响应,以及处理分派机制
- Windows消息响应机制之三:线程与消息队列
- windows消息响应机制之一:消息分析器
- Windows消息响应机制之三:线程与消息队列 .
- Windows消息响应机制之四:PostQuitMessage和GetMessage函数 .
- windows 句柄 消息响应 窗口过程
- windows的窗口消息机制(读windows核心编程笔记):基础篇
- 【C#】无损转换Image为Icon 【C#】组件发布:MessageTip,轻快型消息提示窗 【C#】给无窗口的进程发送消息 【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方 【C#】DataRowState演变备忘
- Windows消息响应机制之五:MFC消息响应机制分析
- windows窗口消息内部处理机制
- windows窗口关闭时的三个消息
- Windows 消息响应机制之二:消息
- 模拟MFC和WTL对Windows窗口框架消息映射机制的封装代码
- windows窗口消息内部处理机制
- Windows窗口程序从创建到关闭产生的消息
- Windows窗口程序从创建到关闭产生的消息