MFC对话框中处理Enter或Esc按键事件方法
2015-05-07 08:48
477 查看
本文转自:http://blog.csdn.net/leichelle/article/details/7991371
建立好的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的消息函数中添加你要实现处理按键事件的代码。
[cpp] view
plaincopyprint?
/********************************************************
* 方法名称: 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);
}
建立好的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的消息函数中添加你要实现处理按键事件的代码。
[cpp] view
plaincopyprint?
/********************************************************
* 方法名称: 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);
}
相关文章推荐
- MFC对话框中处理Enter或Esc按键事件方法
- 对话框处理TAB按键事件的三种方法
- MFC中解决基于对话框程序按下Enter,Esc程序自动退出的方法
- Control.ProcessDialogKey 方法 ——用以处理对话框按键(TAB ESC 箭头键 等)
- MFC中防止Enter和ESC关闭对话框的方法
- Vue 按键修饰符处理事件的方法
- 【转】 UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- ionicView 生命周期事件不调用处理方法 $ ionicView.loaded $ ionicView.enter
- MFC中回车,空格,ESC,F1键盘操作对对话框的影响处理
- IOS开发:UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- J2ME MIDP2.0 GameCanvas中对多个按键同时按下事件处理的一种方法
- MFC 对话框程序的键盘事件响应方法及与按钮事件的整合
- 【MFC-11】VS2010/MFC基于对话框程序之修改Enter/ESC按键默认响应
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- 如何实现取消对话框程序默认的Enter和Esc按键?
- (转) UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- 让非模态对话框处理TAB按键事件的三种方法
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法