MFC 之 OnClose 与 OnCancel
2024-08-31 16:35:44
在一个对话框其中。按下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函数。我认为非常奇怪的做法,原因不明,网上找了非常多也没有说清楚的!
最新文章
- QEMU 中的QOM分析
- iOS-屏幕适配-UI布局
- [delphi]运行cmd命令,并取得输出字符
- PHP 面向对象编程(2)
- JAVA NIO是什么(zz)
- WebRTC手记之本地视频采集
- (easy)LeetCode 242.Valid Anagram
- javascript中Math ceil(),floor(),round()三个函数的对比
- C#研究OpenXML之路(1-新建工作簿文件)
- Springboot+resteasy定时任务
- 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、
- C#:前台线程后台线程
- python中数组与多维数组用法介绍
- 第2章 2.n物理层--数据通信基础知识总结
- 关于JqueryCheck选中获取数据
- Chrome Developer Tools 中的 Preview 不显示 HTML 的问题
- 推荐10款最常用的Android开发工具
- hiho1523 数组重排2
- js 自定义获得类class和获得id
- Consul 简介