OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别归纳
首先,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红色的X对应的是CWnd,而处于对话框中的“确定”、“取消”按钮则对应了CDialog。
其次,OnClose():消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候(而不是我们眼睛所见的对话框从屏幕上消失时),该函数被调用,用户在响应OnOk()或者OnCancel()函数之后,不会发送WM_CLOSE消息
OnDestroy():消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送。
在单视图程序中,根据<<深入浅出MFC>>所讲,程序退出时执行的操作顺序为(从点X按钮开始)
(1)用户点击X退出按钮,发送了WM_CLOSE消息----->响应OnClose()
(2)在WM_CLOSE消息的处理函数中,调用DestroyWindow()----->销毁与指定CWnd窗口对象关联的窗口,但未销毁CWnd对象
(3)在DestroyWindow()中发送了WM_DESTROY消息----->窗口销毁后响应OnDestroy()
(4)在WM_DESTROY消息中调用PostQuitMessage(),发送WM_QUIT消息,结束消息循环
综上,程序先调用OnClose()(也可能不调用),然后调用OnDestroy()(必调用),所以,如果要进行程序结束时的清理工作,应该在OnDestroy()中,而不是在OnClose(),否则就有可能会出现内存泄漏的危险了。
OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别归纳相关推荐
- onok oncancel onclose ondestroy
第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数, 即WM消息响应函数. 从应用程序结构的角度,拿对话框 ...
- 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
总结OnOK().OnCancel().OnClose().OnDestroy()之间的区别 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDest ...
- 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别(转)
目录(?)[+] cDialogonokenddialogdestroywindow区别 收藏 1摘要 2模式对话框的显示 3模式对话框的循环等待 4模式对话框的循环终止 5与OK和Cancle按钮的 ...
- OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数, 即WM消息响应函数. 从应用程序结构的角度,拿对话框 ...
- 总结MFC中OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数, 即WM消息响应函数. 从应用程序结构的角度,拿对话框 ...
- 关于OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数.从应用程序结构的角度,拿对话框来说,红 ...
- 总结OnOK、OnCancel、OnDestroy函数之间的区别
第一,OnOk()和OnCancel()是CDialog基类的成员函数,即ID为ID_OK和ID_CANCEL的按钮的通知消息的响应函数,而OnClose()和OnDestroy()是CWnd基类的成 ...
- onok oncancel ondestroy onclose
按esc只会调用OnCancel() 按alt+f4会先调用OnClose()后调用OnCancel() 按X或关闭按扭时会先调用OnClose()后调用OnCancel() 第一,OnOK()和On ...
- MFC中解决回车和ESC关闭的问题,重载OnOk(),OnCancel()函数的正确做法
本文参考了如下文章: http://msdn.microsoft.com/en-us/library/66b3y2ab(VS.71).aspx http://topic.csdn.net/u/2010 ...
最新文章
- python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。
- atca背板_ATCA介绍全解.ppt
- 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )
- 内存是拿来用的不是拿来看的
- linux grep和正则表达式
- H5 input type=“search“ 不显示搜索 解决方法
- JavaSE基础之JDK的下载和安装(四步开启Java编程的大门)
- 侠客行,我是谁,谁是我
- html查看蛋白质,若干常用蛋白质结构与位点分析网站
- 什么是PID控制中的超调
- 原生js实现 转义还原HTML
- unity pico3 手柄摇杆控制物体移动和旋转
- 2019 年百度之星·程序设计大赛 - 初赛一 解题报告
- android相机底层配置ZSD菜单
- android 解锁mac,论一台笔记本三个不同系统的玩法,解锁正确姿势
- 分布式系统性能测试框架
- ps 中取消网格线的吸附功能,其实是对齐功能
- openjudge开餐馆
- 图说TechCrunch Disrupt NY 很艺术很幽默
- Spring-IOC之基本概念