複製鏈接
請複製以下鏈接發送給好友

加速鍵

鎖定
加速鍵也稱為鍵盤快捷鍵,一個加速鍵是一個或幾個按鍵的組合,它用於激活特定的命令,使用加速鍵不需要費力移動鼠標就能激活菜單項。隨着用户對應用程序越來越熟悉,加速鍵正是他們進一步增加應用程序使用速度所需的快捷方法。 [1] 
加速鍵,即熱鍵,快捷鍵。是產生WM_COMMAND訊息(有些情況下是WM_SYSCOMMAND)的鍵組合。許多時候,程式使用加速鍵來重複常用功能表項的動作(然而,加速鍵還可以用於執行非功能表功能)。例如,許多Windows程式都有一個包含「Delete」或「Clear」選項的「Edit」功能表,這些程式習慣上都將Del鍵指定為該選項的加速鍵。使用者可以通過「 Alt 鍵」從功能表中選擇「 Delete 」選項,或者只需按下加速鍵 Del 。當視窗訊息處理程式收到一個WM_COMMAND訊息時,它不必確定使用的是功能表還是加速鍵。
中文名
加速鍵
外文名
Accelerator Key
別    名
快捷鍵
別    名
熱鍵
功    能
激活特定的命令
常用鍵
F1,F2,BackSpace
加速鍵資源
在資源描述文件中定義加速鍵資源
在資源描述文件中加速鍵資源的定義形式與菜單定義相似,加速鍵定義的格式為:
加速鍵名 ACCELERATORS,加速鍵標識(ID),[類型][NOINVERT][ALT][SHIFT][CONTROL]
其中:
加速鍵標識:與所表示的菜單項標識相同的標識值;
類型:標識該鍵為標準鍵還是虛擬鍵;
NOINVERT:表示當使用加速鍵時,菜單項不高亮度顯示;
ALT,SHIFT,CONTROL:表示組合鍵的組合方式。
常用的加速鍵有以下兩種形式:
(1)″^char″,id
與Ctrl鍵組合的加速鍵。例如“文件”菜單中“保存”項的加速鍵可定義為:
″^S″,IDM_SAVE
(2)nCode,id VIRTKEY
使用虛擬鍵作為加速鍵。虛擬鍵是系統提供與設備無關的鍵碼,如鍵盤上的F功能鍵、方向鍵、Delete鍵等。如VK_F1~VK_F12分別代表F1~F12的功能鍵,VK_DELETE代表刪除鍵等。
加載加速鍵資源
在應用程序定義加速鍵資源句柄後,即可通過調用函數LoadAccelerators加載加速鍵資源,其形式為:
HACCEL hAccel;
hAccel=LoadAccelerators
hInstance, //hInstance為當前程序實例句柄
lpAcceIName //lpAccelName為加速鍵表名
);
翻譯加速鍵
應用程序使用加速鍵的目的是快捷地切換到需要的菜單項,因此,應用程序必須完成加速鍵消息到菜單消息的翻譯。該翻譯操作經常在應用程序的消息循環中進行,其形式如下:
while(GetMessage(&Msg,NULL,0,0))
{
if(!TranslateAccelerator(hwnd,hAccel,&Mag))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
函數TranslateAccelerator是翻譯操作的核心,該函數的原型為:
int TranslateAccelerator
HWND hWnd, //為窗口句柄
HACCEL hAccel, //為加速鍵表句柄
LPMSG lpMsg //為指向MSG結構的指針
函數 TranslateAccelerator的作用是對照加速鍵表,將相關的按鍵消息 WM_KEYDOWN和WM_KEYUP翻譯成WM_COMMAND或WM_SYSCOMMAND消息。其特點是將翻譯後的WM_COMMAND或WM_SYSCOMMAND消息直接發往窗口,而不在消息隊列中等待。消息翻譯完成後,函數返回非0值。 [2] 
參考資料