方法:重载PreTranslateMessage函数,代码如下:
BOOL CDlgScrDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam==VK_RETURN)
{
AfxMessageBox("test");
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
注意:
检测WM_KEYDONW和WM_KEYUP的时候结果完全不一样。WM_KEYDOWN的时候就是正常的。先是在pretranslatemessage函数里面弹出一个对话框,按回车确定后程序就不会弹出对话框了。
如果检测WM_KEYUP的话,则会先调用OnOK里面的函数然后在pretranslatemessage里面又弹出一个对话框,这个时候如果用回车确定pretranslatemessage里面弹出的对话框的话就会死循环的。