或许还有其它更好的办法,但下面这个肯定有用,主要就是重载PreTranslateMessage()函数,在这个函数里捕捉ESC和ENTER键按下时的消息,然后什么都不做,或是添加代码完成你自己想要实现的功能。 1.完全屏蔽ESC键与ENTER回车键 BOOL CQQ_chart_serverDlg::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 CQQ_chart_clientDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN ) { if(GetFocus()->GetDlgCtrlID()==IDC_MSG_SEND)//按下回车,如果当前焦点是在自己期望的控件上 { CQQ_chart_clientDlg::OnBnClickedBtnSend();//添加自己的处理代码 } return TRUE; } if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE) return TRUE; return CDialog::PreTranslateMessage(pMsg); } 该代码在VS2010中的MFC程序测试通过,完全可以实现,红色的代码是可以根据自己的实际情况修改的。
|