使用MFC创建的对话框,会有几个系统的默认的快键键消息响应,比如:按ESC键和Enter键,程序会退出,按F1键,会请求打开帮助页面
现在需要取消这些默认的快捷键或者自己自定义快捷键,则需要重载消息函数:
在dlg.h头文件里增加函数声明:
BOOL PreTranslateMessage(MSG* pMsg);
在dlg.cpp里定义该函数:
BOOL CControlToolDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_KEYDOWN )
{
switch(pMsg->wParam)
{
case VK_ESCAPE:
return TRUE;
case VK_RETURN:
return TRUE;
case VK_F1:
return TRUE;
default:
return CDialog::PreTranslateMessage(pMsg);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
这样再按ESC键和Enter键程序就不响应了,当然也可以自己定义其他消息用来响应
但是我发现这样写后,F1键还是会响应Help页面。
解决方法是:
打开类向导 ,在 Message 里选择 WM_HELPINFO 消息函数,确定保存。然后在dlg.cpp里找到OnHelpInfo函数,将其默认消息注释掉即可
BOOL CControlToolDlg::OnHelpInfo(HELPINFO* pHelpInfo)
{
// TODO: Add your message handler code here and/or call default
//return CDialogEx::OnHelpInfo(pHelpInfo);
return TRUE;
}