MFC中基於對話方塊程式快捷鍵的實現

2021-06-01 13:32:50 字數 973 閱讀 8597

mfc中基於sdi和mdi的程式,預設情況下有快捷鍵資源,直接建立快捷鍵與訊息的對映,就能實現程式的快捷鍵,而基於對話方塊的程式預設情況下沒有快捷鍵資源,鑑於網友問到這個問題,下面我就分別用兩種方法來實現。   

一是在pretranslatemessage函式中,判斷鍵盤的按鍵訊息,比如快捷鍵是ctrl + q,我們就檢測按鍵訊息的ctrl鍵和q是否同時按下就可以了。

bool caccelerator1dlg::pretranslatemessage(msg* pmsg) 

return cdialog::pretranslatemessage(pmsg);

}

二是在pretranslatemessage函式中,通重載入快捷鍵資源,並建立快捷鍵與訊息的對映的方法來實現。先插入快捷鍵資源,通過下面的**來載入該資源。

haccel hacc;
在pretranslatemessage函式中進行快捷鍵的翻譯,如果是wm_keydown和wm_syskeydown訊息就翻譯,翻譯成功返回true。

bool caccelerator2dlg::pretranslatemessage(msg* pmsg) 

return cdialog::pretranslatemessage(pmsg);

}

下面處理快捷鍵對應的響應,在該例項中,快捷鍵表中建立了ctrl +q,shift + q,alt + q,ctrl + shift + q,ctrl + alt + q,shift + alt + q,ctrl + shift + alt + q六個快捷鍵分別進行測試。

void caccelerator2dlg::onctrlq() 

兩種方法的比較:第一中方法顯然比較直接,僅應用於快捷鍵比較少的程式。第二種方法比較實用。 

上述兩種方法都在windows xp和visual c++6.0下除錯成功。

MFC 對話方塊 快捷鍵設定 alt s

1 宣告熱鍵訊息處理函式原型 在.h中訊息對映宣告處 afx msg字樣之後 加入如下語句 lresult onhotkey wparam wparam,lparam lparam 2 訊息與相應處理函式相關聯 在.cpp中加入訊息對映巨集,使訊息與相應處理函式發生關係,on message wm ...

MFC基於對話方塊程式

001 020 else if nresponse idcancel 如果對話方塊是用取消來關閉的,則 021 025 026 由於對話方塊已關閉,所以將返回 false 以便退出應用程式,027 而不是啟動應用程式的訊息幫浦。028 return false 029 因為initinstance ...

對話方塊 空間調整 快捷鍵

命令 鍵 說明格式.底部對齊 ctrl shift 向下鍵 將選定控制項的底邊與主導控制項對齊 format.aligncenters shift f9 將選定控制項的垂直中心與主導控制項對齊 format.alignlefts ctrl shift 向左鍵 選定控制項的左邊緣與主導控制項對齊 fo...