1:最簡單的也是不太好的方法,過載pretranslatemessage函式,遮蔽掉enter鍵。
這樣做的代價就是正常的按鍵也不能處理enter鍵了
bool cfindworddlg::pretranslatemessage(msg *pmsg)
}
return cdialog::pretranslatemessage(pmsg);
}
2:第二種解決方案
這種是本質上的解決方案。
本質上,由於預設輸入enter鍵時,系統會呼叫onok()函式,cdialog::onok()是乙個可以讓對話方塊退出的函式。
所以我們要重寫onok();
如下void ctest_mfcdlg::onok()
由於預設的id號為idok的控制項是被對映到呼叫cdialog::onok函式,所以,我們要吧id號為idok的控制項改名字為id_ok,隨便換個名字就行,然後新增訊息對映
on_bn_clicked(id_ok, &ctest_mfcdlg::onbnclickedok);
void ctest_mfcdlg::onbnclickedok()
void ctest_mfcdlg::onmyok() // :模擬原來的onok()
ok,現在應該好了,使用習慣一切正常。
MFC基於對話方塊程式
001 020 else if nresponse idcancel 如果對話方塊是用取消來關閉的,則 021 025 026 由於對話方塊已關閉,所以將返回 false 以便退出應用程式,027 而不是啟動應用程式的訊息幫浦。028 return false 029 因為initinstance ...
MFC對話方塊程式遮蔽回車與ESC鍵
取消掉 確定 按鈕的default button屬性,按回車鍵程式依然會退出,即使把 確定 按鈕刪除掉,效果也是一樣。看了下 inside visual c 引用一下書中的原話 當使用者按下enter鍵時,windows就會自動去查詢 輸入焦點 落在了哪乙個按鈕上,獲得焦點的按鈕的四周將被點線矩形框...
MFC對話方塊程式遮蔽回車與ESC鍵
取消掉 確定 按鈕的default button屬性,按回車鍵程式依然會退出,即使把 確定 按鈕刪除掉,效果也是一樣。看了下 inside visual c 引用一下書中的原話 當使用者按下enter鍵時,windows就會自動去查詢 輸入焦點 落在了哪乙個按鈕上,獲得焦點的按鈕的四周將被點線矩形框...