介紹
有相當數量的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...