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