在一个对话框其中。按下esc键  与 上面的红叉,默认都是调用OnCancel()函数。

如今我要在按下esc键盘后不关闭程序而是弹出一个对话框,可是这个时候点击红叉

程序也不会关闭,为了解决问题。我们就要重载OnClose函数,

void CMy1223Dlg::OnCancel()
{ MessageBox("假设出来真奇怪","提示",MB_OK);
//CDialog::OnCancel();
} void CMy1223Dlg::OnClose()
{
// TODO: Add your message handler code here and/or call default CDialog::OnClose(); }

这样调用后。点击红叉,却发现也会弹出这个对话框:

由于OnClose()缺省进入IDCANCEL的消息 ,OnClose()会进入CMy1223Dlg::OnCancel()函数;

void CMy1223Dlg::OnCancel()
{ MessageBox("假设出来真奇怪","提示",MB_OK);
//CDialog::OnCancel();
} void CMy1223Dlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
CDialog::OnCancel();
//CDialog::OnClose(); }

所以要想OnClose关闭不进入派生类的OnCancel(CMy1223::OnCancel)函数,那么就在OnClose函数里面直接调用父类的OnCancel(CDialog::OnCancel);

CDialog::OnCancel();里面调用 EndDialog(IDCANCEL);所以也能够直接调用 EndDialog(IDCANCEL)

至于为什么OnClose函数要进入OnCancel函数。我认为非常奇怪的做法,原因不明,网上找了非常多也没有说清楚的!

最新文章

  1. QEMU 中的QOM分析
  2. iOS-屏幕适配-UI布局
  3. [delphi]运行cmd命令,并取得输出字符
  4. PHP 面向对象编程(2)
  5. JAVA NIO是什么(zz)
  6. WebRTC手记之本地视频采集
  7. (easy)LeetCode 242.Valid Anagram
  8. javascript中Math ceil(),floor(),round()三个函数的对比
  9. C#研究OpenXML之路(1-新建工作簿文件)
  10. Springboot+resteasy定时任务
  11. 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、
  12. C#:前台线程后台线程
  13. python中数组与多维数组用法介绍
  14. 第2章 2.n物理层--数据通信基础知识总结
  15. 关于JqueryCheck选中获取数据
  16. Chrome Developer Tools 中的 Preview 不显示 HTML 的问题
  17. 推荐10款最常用的Android开发工具
  18. hiho1523 数组重排2
  19. js 自定义获得类class和获得id
  20. Consul 简介

热门文章

  1. Angular:了解Typescript
  2. 用VBS控制鼠标,在Excel2010、2013,64位中
  3. jquery ui 分页插件 传入后台的连个參数名
  4. amaze样例页面分析(一)
  5. 117.C语言实现桌面输出图片,桌面输出文字,桌面画线
  6. Flask项目之手机端租房网站的实战开发(三)
  7. Centos 6 vnc 部署
  8. GridView与ArrayAdapter的结合
  9. svg的世界、视窗、视野
  10. POJ 2479 Maximum sum POJ 2593 Max Sequence