您的位置:首页 > 其它

MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法

2012-03-02 15:14 435 查看
/article/8084254.html

MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法

或许还有其它更好的办法,但下面这个肯定有用,主要就是重载PreTranslateMessage()函数,在这个函数里捕捉ESC和ENTER键按下时的消息,然后什么都不做,或是添加代码完成你自己想要实现的功能。

1.完全屏蔽ESC键与ENTER回车键

BOOL CTest1Dlg::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)

return TRUE;

if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)

return TRUE;

return CDialog::PreTranslateMessage(pMsg);

}

2.完全屏蔽ESC键,捕捉ENTER回车键

BOOL CTest1Dlg::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN )

{

if(GetFocus()->GetDlgCtrlID()==IDC_MSG_SEND)//按下回车,如果当前焦点是在自己期望的控件上

{

CTest1Dlg::OnBnClickedBtnSend();//添加自己的处理代码

}

return TRUE;

}

if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)

return TRUE;

return CDialog::PreTranslateMessage(pMsg);

}

该代码在VC中的MFC程序测试通过,完全可以实现,红色的代码是可以根据自己的实际情况修改的。

=========================================

esc和enter键在一般人的使用中会认为是取消或者确认当前输入的意思,并且认为焦点会后移(tab键),但是windows的mfc对应的是dialog的onok和oncancel函数会关闭当前窗体,所以一般就是取消作用。一切以鼠标为主,键盘只是输入的数据和字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: