MFC对话框中处理Enter或Esc按键事件方法
?建立好的MFC的對話框,按下Enter或Esc時,系統會調用”默認“事件處理函數,也就是OnOK(),倘若自己的CFormView子類或者CDialog子類沒有重寫OnOK()函數,則會調用父類的OnOK,其結果是關閉界面。要屏蔽Enter鍵或Esc退出的功能,只需要將在CDialog中重寫ONOK()函數即可。而要實現默認為“確定”功能,下面兩種方法供參考:
1.采用ClassWizard進行實現重載OnOK()
?OnOK()
{
?????????if(...)
?????????{// 當是Enter或Esc按鍵事件時
???????????.....
?????????}
?????????else
?????????{???// 點擊關閉按鈕時
???????????????????....
???????????????????CDialog::OnOK();
?????????}
}
2.采用ClassWizard進行實現重載PreTranslateMessage
?????在類視圖里面選擇你要實現的類,右鍵屬性,在屬性里面找到函數PreTranslateMessage,然后添加PreranslateMessage的消息函數,在PreTranslateMessage的消息函數中添加你要實現處理按鍵事件的代碼。
/********************************************************
* 方法名稱: PreTranslateMessage(MSG *pMsg)
* 描述: 該方法主要是處理傳遞消息的,任何消息產生的消息都會經過這個方法處理,
* 然后,消息才會到達相應的應用程序中。
* 調用模塊:CDialogEx::PreTranslateMessage(pMsg)父類的對應方法?
* 輸入: MSG類型的消息對象指針
* 輸出: 無
* 返回值: bool值
*********************************************************/
BOOL CSerialDlg::PreTranslateMessage(MSG* pMsg)
{
?? ?// TODO: Add your specialized code here and/or call the base class
?? ?// 把Esc和Enter按鍵事件消息過濾掉,否則該消息會導致對應應用程序調用OnOK()方法,結束應用程序
?? ?if (pMsg->message == WM_KEYDOWN)
?? ?{
?? ??? ?switch(pMsg->wParam)
?? ??? ?{
?? ??? ??? ?case VK_ESCAPE: //Esc按鍵事件
?? ??? ??? ??? ?return true;
?? ??? ??? ?case VK_RETURN: //Enter按鍵事件
?? ??? ??? ??? ?return true;
?? ??? ??? ?default:
?? ??? ??? ??? ?;
?? ??? ?}
?? ?}
?? ?
?? ?return CDialogEx::PreTranslateMessage(pMsg);
}
原文:https://blog.csdn.net/leichelle/article/details/7991371/?
?
總結
以上是生活随笔為你收集整理的MFC对话框中处理Enter或Esc按键事件方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TS 188字节流结构图
- 下一篇: 帧间预测小记