MFC对话框中处理Enter或Esc按键事件方法
建立好的MFC的对话框,按下Enter或Esc时,系统会调用”默认“事件处理函数,也就是OnOK(),倘若自己的CFormView子类或者CDialog子类没有重写OnOK()函数,则会调用父类的OnOK,其结果是关闭界面。要屏蔽Enter键或Esc退出的功能,只需要将在CDialog中重写ONOK()函数即可。而要实现默认为“确定”功能,下面两种方法供参考:
1.采用ClassWizard进行实现重载OnOK()
OnOK()
{
if(...)
{// 当是Enter或Esc按键事件时
.....
}
else
{ // 点击关闭按钮时
....
CDialog::OnOK();
}
}
2.采用ClassWizard进行实现重载PreTranslateMessage
在类视图里面选择你要实现的类,右键属性,在属性里面找到函数PreTranslateMessage,然后添加PreranslateMessage的消息函数,在PreTranslateMessage的消息函数中添加你要实现处理按键事件的代码。
/********************************************************
* 方法名称: PreTranslateMessage(MSG *pMsg)
* 描述: 该方法主要是处理传递消息的,任何消息产生的消息都会经过这个方法处理,
* 然后,消息才会到达相应的应用程序中。
* 调用模块:CDialogEx::PreTranslateMessage(pMsg)父类的对应方法
* 输入: MSG类型的消息对象指针
* 输出: 无
* 返回值: bool值
*********************************************************/
BOOL CSerialDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
// 把Esc和Enter按键事件消息过滤掉,否则该消息会导致对应应用程序调用OnOK()方法,结束应用程序
if (pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_ESCAPE: //Esc按键事件
return true;
case VK_RETURN: //Enter按键事件
return true;
default:
;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
原文:https://blog.csdn.net/leichelle/article/details/7991371/
相关文章
- addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用
- vue.js--基础事件定义,获取数据,执行方法传值
- Windows窗体应用程序常用的几个类的属性、方法以及事件
- Flink-基于Table设置事件属性
- jQuery on()方法(函数)有哪些事件
- angular 禁止事件冒泡 和 默认行为
- appcrash事件怎么解决?三种方法教你
- js之事件冒泡和事件捕获详细介绍
- MFC中模拟按钮控件BN_CLICKED消息事件
- C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现
- jQuery碎语(2) 事件
- checkbox复选框,如何让其勾选时触发一个事件,取消勾选时不触发
- JS——DOM事件流(冒泡,捕捉,目标)、阻止事件冒泡 、事件委托
- 【HarmonyOS】FA服务卡片中如何给List添加消息事件
- css的hover事件,如果点击之后通过js操作样式,hover事件就会失效的处理方法,外部css样式与js的DOM样式谁的权重高?
- 《Node应用程序构建——使用MongoDB和Backbone》一2.3 事件
- 浏览器的统一指针事件:Pointer Event
- Vue--vuex状态管理-多界面状态管理$store.state.变量名称 ---数据通触发事件改变this.$store.commit
- Vue--名称案例,监听键盘事件@keyup--实时获取数据-----watch属性方法获取
- swiper在vue项目中的循环轮播bug以及点击事件
- jquery触发点击事件
- js监听transition过渡事件
- [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
- 小技巧随手记:一行代码实现星级评分、同步阻塞实现sleep函数、一行代码生成随机字符串(唯一ID/Number.prototype.toString([radix])用法)、获取浏览器Cookie的值、颜色RGB转十六进制、使用数字分隔符、最快获取dom方法(ID同名变量获取dom元素)、带命名空间的事件绑定
- 【Unity3D日常开发】Unity3D中事件监听学习记录
- vue.js 使用 fastclick解决移动端click事件300毫秒延迟方法
- 我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法
- 小学生python游戏编程arcade----游戏界面按钮实现事件实现的三种方法
- android studio 添加按钮点击事件的三种方法
- 法国恐袭事件后Twitter迅速删除极端言论
- jquery click()方法模拟点击事件对a标签不生效