OnClose():消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候(而不是我们眼睛所见的对话框从屏幕上消失时),该函数被调用。用户在响应OnOk()或者OnCancel()函数之后,不会发送WM_CLOSE消息。

OnDestroy():消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时被发送。

在单视图程序中,根据<<深入浅出MFC>>所讲,程序退出时执行的操作顺序为
(1)用户点击退出按钮,发送了WM_CLOSE消息
(2)在WM_CLOSE消息的处理函数中,调用DestroyWindow()
(3)在DestroyWindow()中发送了WM_DESTROY消息
(4)在WM_DESTROY消息中调用PostQuitMessage(),发送WM_QUIT消息,结束消息循环

综上,程序先调用OnClose()(也可能不调用),然后调用OnDestroy()(必调用),所以,如果要进行程序结束时的清理工作,应该在OnDestroy()中,而不是在OnClose(),否则就有可能会出现内存泄漏的危险了!

OnClose和OnDestroy相关推荐

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

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

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

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

  3. 关于OnOK()、OnCancel()、OnClose()、OnDestroy() 模式对话框

    关于OnOK().OnCancel().OnClose().OnDestroy() 模式对话框 http://www.cnblogs.com/minvt/archive/2009/11/16/1603 ...

  4. 【MFC】关于OnOK()、OnCancel()、OnClose()、OnDestroy() 模式对话框

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

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

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

  6. 关于CDialog类的OnOK、OnCancel、OnClose和OnDestroy

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

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

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

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

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

  9. OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别归纳

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

最新文章

  1. Ruby中的require_relative和require有什么区别?
  2. 复习一个知识点——原、反、补码以及取反操作
  3. java parameters用法_(四)Parameters,简单参数就用这个
  4. OAM Kubernetes 标准实现与核心依赖库发布 | 云原生生态周报 Vol. 52
  5. XML CDATA的作用
  6. 数组黑科技(偏性能方面)未完待更新...
  7. 网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议)
  8. 【数据库的备份与还原】 .
  9. java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理
  10. c语言实现判断两个子图是否同构问题_经典问题-回溯法-最大团问题
  11. android launcher推荐,追求效率的你,需要这款 Android 最快启动器:FastKey Launcher
  12. 用计算机语言拜年,鸡年大吉!22种编程语言大拜年
  13. 10年java架构师教你如何快速打好Java基础?
  14. mnist数据集下载及使用
  15. 项目管理工具——Jira使用和配置
  16. matlab求极值的函数
  17. html5 app 原理,浅析开发html5 app的三大优势
  18. 传染病研究-靶向下一代宏基因组测序(mNGS)分析
  19. hone hone clock创意前端时钟
  20. 图片怎么修改尺寸大小?在线调整图像大小的方法

热门文章

  1. 公司网站服务器内存多大合适,一般服务器内存多大合适
  2. excel 取消合并单元格并填充
  3. 国内“惨淡”,国外“飞腾”,腾讯将增持育碧,力争成为最大股东
  4. 一个好玩有趣的Python手绘图形库(雷达图、柱状图、折线图...)
  5. MySQL服务无法启动(2003 - Can‘t connect to MySQL server on‘localhost‘
  6. Cocos Creator:解密华容道-数字拼盘
  7. 关于测绘软件一些优缺点的认识
  8. Jira和Confluence安装部署
  9. CSGO服务器插件配置教程SourceModMetaMod插件深度解析
  10. k8s_deployment 以及灰度发布、滚动发布和蓝绿发布的零散笔记