VC程式設計增加快捷鍵的幾種方式

2021-06-22 13:17:18 字數 3258 閱讀 2653

對於這個問題,大家應該都不陌生,寫於此只是進行了歸納總結,算是乙個備忘吧

定義快捷方式有下面幾種方法:

1.對於選單(menu)或者按鈕(button)

直接在選單或按鈕的標題中,包含&x即可,這裡x是任意字元鍵

示例:tool選單項的標題可以寫作:"&tool"或者"工具(&t)",這樣就可以直接用alt+t直接呼叫該選單項的功能

2.對選單(menu)

選單的另一種快捷鍵的定義方式是組合鍵或者虛擬鍵,如ctrl+o表示開啟檔案,或f5表示執行等

示例: 在file選單項的open字選單項的標題可以寫作:"&open\tctrl+o",這樣我們既可以用alt+o或ctrl+o來直接呼叫選單項的功能

3.另一種方式定義快捷鍵的就是自定義加速鍵

首先在資源檔案accelerator中新增快捷鍵資源 id選擇你要關聯選單項的名稱然後再設定你的快捷鍵

在.h檔案中加入乙個haccel   haccel;  

變數然後在oninitdialog或初始化中加入 haccel=::loadaccelerators(afxgetinstancehandle(),makeintresource(idr_menu_main)); idr_menu_main為加速鍵的資源檔名

最後在pretranslatemessage(msg* pmsg) 中加入:

[cpp]view plain

copy

if(::translateaccelerator(getsafehwnd(),haccel,pmsg))    

return

true

;  

這樣 以後只要在accelerator資源檔案中新增快捷鍵就可以了

注意: 新增快捷鍵的名字一定要與選單名稱一樣 這樣才能響應.現在只需要在此選單項中加入oncommand訊息的處理就可以了.

4.第二種自定義加速鍵的方法

還是在資源檔案accelerator中新增快捷鍵資源 id自己定義乙個.然後再設定你的快捷鍵.

在.h檔案中定義乙個快捷鍵物件haccel m_haccel;

變數然後在oninitdialog或初始化中加入 haccel=::loadaccelerators(afxgetinstancehandle(),makeintresource(idr_menu_main)); idr_menu_main為加速鍵的資源檔名

再新增pretranslatemessage訊息處理 在裡面加入以下**:

[cpp]view plain

copy

//儲存快捷鍵被啟用

if(m_haccel   !=   null)    

再新增oncommand訊息處理 加入以下**:

[cpp]view plain

copy

//響應加速鍵

switch

(loword(wparam))    

這種方式可以任意呼叫加速鍵

5.選單新增全域性快捷鍵,以對話方塊程式為例:

在oninitdialog中新增註冊熱鍵的**:

[cpp]view plain

copy

registerhotkey(getsafehwnd(),1001,null,vk_f2);

//f2鍵

registerhotkey(getsafehwnd(),1002,mod_alt,'1'

);//alt+1鍵 在

begin_message_map(c***dlg, cdialog)

...end_message_map()

中新增wm_hotkey的訊息對映:

[cpp]view plain

copy

on_message(wm_hotkey,&c***dlg::onhotkey)

//快捷鍵訊息對映手動加入

在標頭檔案中新增onhotkey的宣告:

[cpp]view plain

copy

protected

:  afx_msg lresult

onhotkey(

wparam

wparam,

lparam

lparam);

//手動加入.

cpp中onhotkey的實現**:

[cpp]view plain

copy

//相應快捷鍵的訊息對映

lresult

c***dlg::onhotkey(

wparam

wparam,

lparam

lparam)  

else

if(wparam==1002)  

return

0;  

}  

關閉對話方塊時使用

[cpp]view plain

copy

unregisterhotkey(getsafehwnd(),1001);

//登出f2鍵

unregisterhotkey(getsafehwnd(),1002);//登出alt+1鍵

登出熱鍵.

7.按鈕新增區域性快捷鍵可以直接在按鈕的標題中用 &+'x' 即可,則按下 ctrl + 'x' 即按下此按鈕,起到快捷鍵的作用,另外還可以學習選單新增區域性快捷鍵的第二種方式,在pretranslatemessage中新增處理函式,譬如:

[cpp]view plain

copy

bool

cyourdlg::pretranslatemessage(msg*   pmsg)      

//   switch   (pmsg->wparam)  

}    

break

;    

default

:   

break

;                            

}   //   switch   (pmsg->message)                                      

return

(bhandledmsg   ?   true   :   cdialog::pretranslatemessage(pmsg));      

}  

VC程式設計增加快捷鍵的幾種方式

對於這個問題,大家應該都不陌生,寫於此只是進行了歸納總結,算是乙個備忘吧 定義快捷方式有下面幾種方法 1.對於選單 menu 或者按鈕 button 直接在選單或按鈕的標題中,包含 x即可,這裡x是任意字元鍵 示例 tool選單項的標題可以寫作 tool 或者 工具 t 這樣就可以直接用alt t直...

VC程式設計增加快捷鍵的幾種方式

對於這個問題,大家應該都不陌生,寫於此只是進行了歸納總結,算是乙個備忘吧 定義快捷方式有下面幾種方法 1.對於選單 menu 或者按鈕 button 直接在選單或按鈕的標題中,包含 x即可,這裡x是任意字元鍵 示例 tool選單項的標題可以寫作 tool 或者 工具 t 這樣就可以直接用alt t直...

在頁面上增加快捷鍵的支援

在reader專案中需要加上上下item的快捷鍵支援。現在貼下使用到的 你可以把事件onkeyup寫在body中,如果動態attache的話 是不是用document.body.nkeyup fucntion 的,你需要把時間attach到document上。另外 在firefox 和 ie下取on...