為對話方塊程式加上Accelerator(快捷鍵)

2021-03-31 08:56:31 字數 1485 閱讀 2790

方法一:

1 插入乙個新的accelerator到資源裡,把加速鍵和對應的響應控制項(如乙個按鈕)關聯

2 在對話方塊標頭檔案中宣告:

haccel m_haccel;

3 在對話方塊的建構函式裡初始化m_haccel

m_haccel = ::loadaccelerators(afxgetinstancehandle(),makeintresource(idr_accelerator1));

4 然後過載對話方塊的pretranslatemessage函式,在

bool caboutdlg::pretranslatemessage(msg* pmsg)

}return cdialog::pretranslatemessage(pmsg);

}方法二:

1   宣告熱鍵訊息處理函式原型   

在.h中訊息對映宣告處(afx_msg字樣之後)加入如下語句:   

lresult  onhotkey(wparam  wparam,lparam  lparam);   

2.  訊息與相應處理函式相關聯   

在.cpp中加入訊息對映巨集,使訊息與相應處理函式發生關係, 

on_message(wm_hotkey,onhotkey);   

3.  為方便以後的操作

預先在類中建立乙個響應wm_create和wm_destroy訊息的函式 

oncreate()與ondestroy()的框架

4.向系統登記熱鍵   

在oncreate()函式中加入如下**以向系統登記熱鍵,本例子的熱鍵設為 

ctrl+shift+a.   

registerhotkey(m_hwnd,1001,mod_control|mod_shift,'a');   

registerhotkey(m_hwnd,1002,mod_control|mod_shift,'a');   

5.處理熱鍵   

在訊息處理函式onhotkey()中對熱鍵進行處理,並可加入使用者希望執行的程式** 

lresult c****::onhotkey(wparam  wparam,lparam  lparam)   

if(wparam==1001||wparam==1002)   

cwnd::setforegroundwindow();//使得被啟用視窗出現在前景   

messagebox("hello!");   

//使用者可在此新增**   

return  0;   

6.程式執行完畢後解除熱鍵   

在ondestroy()中通過unregisterhotkey()解除熱鍵登記,釋放系統資源.   

unregisterhotkey(m_hwnd,1001);   

unregisterhotkey(m_hwnd,1002);

給對話方塊加上背景面板

對話方塊的 skin 前段時間有些學生問我,怎麼給我們做的對話方塊加上漂亮的 skin 特別是就像 qq遊戲的登入以及遊戲介面一樣 qq遊戲的登入介面就是乙個對話方塊 經過一些曲折,我在 codeproject.com 中找到了一些給對話方塊及控制項加 skin 的方式,在下面我通過乙個例子給出了其...

MFC為簡單對話方塊程式新增選單並加上響應事件

1.在資源視窗插入選單,編輯選單。選單名稱後面加 字母 就是快捷鍵 2.在對話方塊右鍵 屬性 常規 菜單選框中選擇上面建立的選單。執行可以見到,對話方塊已建立起了選單,下面開始新增響應事件 選單每一項都有乙個id,可以在選單視窗檢視。1.在對話方塊的cpp檔案裡的響應事件列表中begin messa...

MFC為簡單對話方塊程式新增選單並加上響應事件

1.在資源視窗插入選單,編輯選單。選單名稱後面加 字母 就是快捷鍵 2.在對話方塊右鍵 屬性 常規 菜單選框中選擇上面建立的選單。執行可以見到,對話方塊已建立起了選單,下面開始新增響應事件 選單每一項都有乙個id,可以在選單視窗檢視。1.在對話方塊的cpp檔案裡的響應事件列表中begin messa...