MFC對話方塊應用程式按下回車鍵或者ESC鍵自動關閉

2021-10-14 17:29:36 字數 900 閱讀 5126

原文已經找不到鏈結,因此選了「原創」,侵刪

mfc對話方塊應用程式中,按下回車鍵或者esc鍵,對話方塊會自動關閉。

當使用者按下enter鍵時,程式就會自動去查詢「輸入焦點」落在了哪乙個按鈕上,獲得焦點的按鈕的四周將被點線矩形框所包圍。如果所有按鈕都沒有獲得輸入焦點,windows就會自動去尋找程式或資源所指定的預設按鈕。如果對話方塊沒有預設按鈕,那麼即使對話方塊中沒有「確定」按鈕,onok函式也會自動被呼叫。

(確認預設按鈕(控制項)的方法是:在資源檢視中按下ctrl+d,顯示的數字順序即為控制項的先後預設順序,如下圖預設控制項為「確定」按鈕:)滑鼠左鍵雙擊可以改變先後順序。

過載對話方塊的pretranslatemessage函式和修改onok函式。

如果沒有這兩個函式則先新增:在「類檢視」中選擇c***dlg類,在屬性頁的「重寫」中新增onok函式和pretranslatemessage函式,如圖所示:

修改函式內容:

1.	void ctestdlg::onok()  

2.

8.

9. bool ctestdlg::pretranslatemessage(msg* pmsg)

10.

18. return cdialog::pretranslatemessage(pmsg);

19. }

按鈕屬性中有default button屬性,是決定該按鈕是該按鈕是否是預設按鈕,即預設擁有焦點的按鈕。

用**也可以實現對控制項焦點的設定:getdlgitem(id_login)->setfocus()

MFC對話方塊程式遮蔽回車與ESC鍵

取消掉 確定 按鈕的default button屬性,按回車鍵程式依然會退出,即使把 確定 按鈕刪除掉,效果也是一樣。看了下 inside visual c 引用一下書中的原話 當使用者按下enter鍵時,windows就會自動去查詢 輸入焦點 落在了哪乙個按鈕上,獲得焦點的按鈕的四周將被點線矩形框...

MFC對話方塊程式遮蔽回車與ESC鍵

取消掉 確定 按鈕的default button屬性,按回車鍵程式依然會退出,即使把 確定 按鈕刪除掉,效果也是一樣。看了下 inside visual c 引用一下書中的原話 當使用者按下enter鍵時,windows就會自動去查詢 輸入焦點 落在了哪乙個按鈕上,獲得焦點的按鈕的四周將被點線矩形框...

如何定製對話方塊中的回車鍵

本文例子 基於對話方塊的程式中,每次按下回車鍵時,程式都退出。去掉按鈕的 bs defpushbutton 屬性並重寫onok函式也沒用。那麼如何定製回車鍵的行為呢?這個問題很easy,但是要說明白,卻要費點時間。這個問題在windows的開發中由來已久,對於初學者來說,這是個惱人的問題,幸運的是,...