Visual C++ 使用MFC 生成的dialog工程默认情况下按Enter键或Esc键后会导致程序直接退出。
该现象并非Bug或问题,但是在日常开发过程中并不需要Dialog工程在按Enter键或Esc键的情况下退出,尤其是Enter键。
解决思路:直接屏蔽Enter键和Esc键的消息响应。
解决方法:
在CXXXDlg类中重载函数PreTranslateMessage(MSG* pMsg)
1. 类视图中 进入CXXXDlg类向导。
2. 选择虚函数选项卡,添加PreTranslateMessage函数。
函数中添加如下代码
BOOL CSocketTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)// 屏蔽esc键
{
return TRUE;// 不作任何操作
}
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)// 屏蔽enter键
{
return TRUE;// 不作任何处理
}
return CDialogEx::PreTranslateMessage(pMsg);
}
完美解决问题