鍵盤訊息 加速器處理MFC對話方塊的應用程式

2021-10-08 23:12:17 字數 1309 閱讀 1791

介紹

有相當數量的windows程式設計師堅持,通常非常堅持

強烈建議程式設計師應該避免重寫預翻譯的資訊。他們

有他們這樣說的理由,我相信他們是正確的。但在這個

文章我的目的不是去思考預譯的意思是什麼

對你有好處,還是你應該像躲避瘟疫一樣躲避它。我發現

pretranslatemessage在基於對話方塊的應用程式中非常方便

處理鍵盤訊息。除了使用pretranslatemessage,我還展示了

控制項中如何覆蓋processmessagefilter來處理快捷鍵

基於對話方塊的應用程式。

使用預翻譯資訊處理對話方塊擊鍵

你經常會聽到新手問他們如何才能做到這一點

在基於對話方塊的應用程式中捕捉擊鍵。大概他們想處理

wm_keydown / wm_keyup失敗。整個問題是基於對話方塊

焦點總是在子控制項上而不是主控件上

對話方塊視窗。那麼你需要做什麼呢?你需要重寫

pretranslatemessage。我將向您展示乙個簡單的示例。

假設你有乙個基於對話方塊的應用程式,上面有很多編輯框

對話方塊。它基本上是乙個資料輸入程式,因此你覺得它會成功

對於終端使用者來說,如果按回車鍵將焦點轉移到

下乙個編輯框,就好像他按了tab。解決方法是如此簡單和

很簡單,我將在下面演示預翻譯的資訊。

隱藏,複製codebool cpretranstestdlg::pretranslatemessage(msg* pmsg)

return cdialog::pretranslatemessage(pmsg);

}我所做的是檢查是否訊息是乙個wm_keydown,如果它是

然後我檢查wparam是否為vk_return。如果我發現是這樣,我就改變

wparam到vk_tab,然後呼叫基類實現。容易啊?

使用processmessagefilter處理基於對話方塊的快捷鍵

假設你在基於對話方塊的應用中有乙個選單

某些特定任務的加速鍵。你很快就會失望地發現

熱鍵不工作。問題是模態對話方塊應用程式的

訊息迴圈不呼叫translateaccelerator。我不知道為什麼會這樣。

微軟團隊決定人們不應該使用基於對話方塊的

編寫複雜的應用程式,熱鍵和選單。

但像往常一樣,他們也提出了乙個變通方案。下面是你該怎麼做

實現它。我想再次宣告,儘管這是微軟

推薦的技術將會有乙個好的大多數mfc大師,像約瑟夫

比如新來的人,他會告訴你不應該這樣做。但

有時你不得不犧牲優雅來快速完成任務

用最少的努力。

VS2010 MFC(對話方塊 訊息對話方塊)

前面幾節講了屬性頁對話方塊,我們可以根據所講內容方便的建立自己的屬性頁對話方塊。本節講解windows系統中最常用最簡單的一類對話方塊 訊息對話方塊。我們在使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以mfc提供了兩個...

MFC對話方塊之鍵盤響應

在mfc對話方塊上新增鍵盤響應,在對話方塊屬性 訊息 wm keydown新增訊息函式新增 程式根本就執行不到鍵盤響應函式中去,重新編寫。1.dlg h檔案中宣告函式virtual bool pretranslatemessage msg pmsg 2.新增實現函式 bool pretranslat...

MFC對話方塊訊息傳遞順序

mfc應用程式中處理訊息的順序,建立視窗的過程關閉視窗的順序 非模態視窗 開啟模式對話方塊的函式呼叫順序.2007 12 06 19 23mfc應用程式中處理訊息的順序 1.afxwndproc 該函式負責接收訊息,找到訊息所屬的cwnd物件,然後呼叫afxcallwndproc 2.afxcall...