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

2021-06-02 00:30:11 字數 2533 閱讀 9470

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

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

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) 中加入:

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訊息處理 在裡面加入以下**:

//儲存快捷鍵被啟用

if(m_haccel   !=   null) 

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

//響應加速鍵

switch(loword(wparam)) 

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

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

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

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的訊息對映:

on_message(wm_hotkey,&c***dlg::onhotkey)//快捷鍵訊息對映手動加入

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

protected:

afx_msg lresult onhotkey(wparam wparam,lparam lparam);//手動加入.

cpp中onhotkey的實現**:

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

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

else if (wparam==1002)

return 0;

}關閉對話方塊時使用

unregisterhotkey(getsafehwnd(),1001);//登出f2鍵

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

登出熱鍵.

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

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...