屏蔽回车键无效解决思路

屏蔽回车键无效
BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_ESCAPE  || pMsg->wParam == VK_RETURN)  //屏蔽ESC/ENTER
{
return TRUE;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}

对话框上有按钮。本想屏蔽回车键,但是发现没有效果,敲了回车按钮里的代码还是被执行了。下断点发现敲回车的时候根本不到取wParam这一句。试了ESC,屏蔽成功了。不知道是什么原因?
------解决思路----------------------
vk_enter?
------解决思路----------------------
CWinApp 中PreTranslateMessage会先发给有焦点的窗口,发不成功才会向更高级的父窗口发送

可以重载Dialog的OnOk 或 CWinApp的PreTranslateMessage中处理
------解决思路----------------------
VK_ENTER 
A virtual key code for the ENTER key. 

------解决思路----------------------
return false;试试
------解决思路----------------------
2楼正解,在CDemoDlg的PreTranslateMessage中拦截的只是CDemoDlg这个主窗口上的按键消息,如果焦点在窗口的某个控件上,按键消息将被传递给控件处理而不发送到主窗口。所以在 CWinApp的PreTranslateMessage中处理即OK
------解决思路----------------------
处理回车直接重载OnOK
------解决思路----------------------
在C**Dlg.h中加入  virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual void OnOK();
在C**Dlg.cpp
BOOL C**Dlg::PreTranslateMessage(MSG* pMsg)//使回车和exs失效
 {
     //屏蔽ESC关闭窗体/
     if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE ) return TRUE;
     //屏蔽回车关闭窗体,但会导致回车在窗体上失效.
     //if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN && pMsg->wParam) return TRUE;
     else
        return CDialog::PreTranslateMessage(pMsg);
}
 void C**Dlg::OnOK()
 {
     //CDialogEx::OnOK();
 }