MFC EditCtrl响应回车按键事件

来源:互联网 发布:自从做了淘宝客服 编辑:程序博客网 时间:2024/05/16 01:20

MFC EditCtrl响应回车按键事件


需求:对于一个友好的用户界面,用户在编辑框中按下回车键后界面焦点会跳转到其他控件,或者执行特定的代码。

但MFC并不用户友好,实际上非常不友好。无论MDI,SDI还是Dialog界面中,用户按下回车键,都将会使界面关闭。(这种说法并不严密,姑且如此表述)


原因:

按下回车时,系统会调用”默认“事件处理函数,也就是OnOK(),倘若你自己的CFormView子类或者CDialog子类没有重写OnOK()函数,则会调用父类的OnOK,其结果是关闭界面。


解决方法:

1.截获回车键并屏蔽
2.Hook
3.实现OnOK函数,进行判断
以上三种方法都不是很优雅,我推荐使用第三种方法,OnOK函数体可以这样写:
{
if(GetDlgItem(IDC_ED_MC)==GetFocus())//IDC_ED_MC是希望处理回车事件的EditCtrl控件的ID
{
//按回车之后需要执行的代码
return;//执行之后直接返回
}
//此处写OnOK函数本身需要处理的代码
OnOk();//调用父类OnOk函数
0 0
原创粉丝点击