首先,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()之间的区别归纳相关推荐

  1. onok oncancel onclose ondestroy

    第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数, 即WM消息响应函数.   从应用程序结构的角度,拿对话框 ...

  2. 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别

    总结OnOK().OnCancel().OnClose().OnDestroy()之间的区别 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDest ...

  3. 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别(转)

    目录(?)[+] cDialogonokenddialogdestroywindow区别 收藏 1摘要 2模式对话框的显示 3模式对话框的循环等待 4模式对话框的循环终止 5与OK和Cancle按钮的 ...

  4. OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别

    第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数, 即WM消息响应函数.   从应用程序结构的角度,拿对话框 ...

  5. 总结MFC中OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别

    第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数, 即WM消息响应函数.   从应用程序结构的角度,拿对话框 ...

  6. 关于OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别

    第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数.从应用程序结构的角度,拿对话框来说,红 ...

  7. 总结OnOK、OnCancel、OnDestroy函数之间的区别

    第一,OnOk()和OnCancel()是CDialog基类的成员函数,即ID为ID_OK和ID_CANCEL的按钮的通知消息的响应函数,而OnClose()和OnDestroy()是CWnd基类的成 ...

  8. onok oncancel ondestroy onclose

    按esc只会调用OnCancel() 按alt+f4会先调用OnClose()后调用OnCancel() 按X或关闭按扭时会先调用OnClose()后调用OnCancel() 第一,OnOK()和On ...

  9. MFC中解决回车和ESC关闭的问题,重载OnOk(),OnCancel()函数的正确做法

    本文参考了如下文章: http://msdn.microsoft.com/en-us/library/66b3y2ab(VS.71).aspx http://topic.csdn.net/u/2010 ...

最新文章

  1. python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。
  2. atca背板_ATCA介绍全解.ppt
  3. 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )
  4. 内存是拿来用的不是拿来看的
  5. linux grep和正则表达式
  6. H5 input type=“search“ 不显示搜索 解决方法
  7. JavaSE基础之JDK的下载和安装(四步开启Java编程的大门)
  8. 侠客行,我是谁,谁是我
  9. html查看蛋白质,若干常用蛋白质结构与位点分析网站
  10. 什么是PID控制中的超调
  11. 原生js实现 转义还原HTML
  12. unity pico3 手柄摇杆控制物体移动和旋转
  13. 2019 年百度之星·程序设计大赛 - 初赛一 解题报告
  14. android相机底层配置ZSD菜单
  15. android 解锁mac,论一台笔记本三个不同系统的玩法,解锁正确姿势
  16. 分布式系统性能测试框架
  17. ps 中取消网格线的吸附功能,其实是对齐功能
  18. openjudge开餐馆
  19. 图说TechCrunch Disrupt NY 很艺术很幽默
  20. Spring-IOC之基本概念

热门文章

  1. 李阳疯狂英语突破对话(52)-问路
  2. Servlet 过滤器( Filter )
  3. 网络营销VS传统营销有什么区别?
  4. vue动画特效-渐变动画和@keyframes
  5. 【编译原理】写出下列文法对应定义的是什么语言?
  6. Three.js着色器基础【含源码】
  7. BSV智能合约(三):神奇的OP_CHECKSIG
  8. Java—Sort排序
  9. Python之UART串口通信
  10. android系统开发题库,基于Android题库系统设计与实现.doc