鍵盤加速器函數(shù)(Keyboard Accelerator)
函數(shù)功能:拷貝加速鍵表?截惣铀冁I表函數(shù)拷貝指定的加速鍵表。此函數(shù)用于獲得與一加速鍵表句柄相對(duì)應(yīng)的加速鍵表數(shù)據(jù),或用于確定加速鍵表數(shù)據(jù)的大小。
函數(shù)原型:int CopyAcceleratorTable(HACCEL hAccelSrc,LPACCEL IpAcceIDst,int cAccelEntries);
參數(shù):
hAccelSrc:欲拷貝的加速鍵表的句柄。
IpAccelDst:指向ACCEL結(jié)構(gòu)數(shù)組的指針,該結(jié)構(gòu)數(shù)組中存在著將要拷貝的加速鍵表信息。
cAccelEntries:指定由IpAcceIDst參數(shù)指向的欲拷貝到緩沖區(qū)的ACCEL結(jié)構(gòu)的個(gè)數(shù)。
返回值:如果IpAccelDst為空,則返回值給出初始加速鍵表入口的個(gè)數(shù)。否則,給出己拷貝的加速鍵表的入口個(gè)數(shù)。
速查:WindOWS NT:3.1及以上版本:Windows:95及以上版本;Windows CE:不支持;頭文件:Winuser.h;庫(kù)文件:user32.lib;Unicode:在Windows NT上實(shí)現(xiàn)為Unicode和ANSI兩種版本。
CreateAcceleratorTable
函數(shù)功能:創(chuàng)建加速鍵表。該函數(shù)創(chuàng)建一個(gè)加速鍵表。
函數(shù)原型:HACCEL CreateAcceleratorTable(LPACCEL lpaccl,int cEntries);
參數(shù):
Ipaccl:指向描述加速鍵表的ACCEL結(jié)構(gòu)數(shù)組的指針。
cEntires:指定數(shù)組中ACCEL結(jié)構(gòu)的個(gè)數(shù)。
返回值:如果函數(shù)調(diào)用成功,則返回值為所創(chuàng)建的加速鍵表的句柄;否則,返回值為空。若想獲得更多的錯(cuò)誤信息,請(qǐng)調(diào)用GetLastError。
備注:關(guān)閉應(yīng)用程序之前,必須調(diào)用DestroyAcceeleratorTable函數(shù)撤消所有由CreatedAccelerstorTable函數(shù)創(chuàng)建的加速鍵表。
速查:Windows NT:3.1u及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本:頭文件:winuser.h;庫(kù)文件:USer32.lib; Unicode:在Windows NT上實(shí)現(xiàn)為Unicode和ANSI兩種版本。
DestroyAcceleratorTable
函數(shù)功能:撤消加速鍵表。該函數(shù)撤消一個(gè)加速鍵表。在關(guān)閉應(yīng)用程序之前,必須使用該函數(shù)撤消所有由DestroyAcceleratorTable函數(shù)創(chuàng)建的加速鍵表。
函數(shù)原型: BOOL DestroyAcceleratorTable(HACCEL hAccel);
參數(shù):
hAccdel:將被撤消的加速鍵表的句柄。該句柄必須己通過(guò)調(diào)用DestroyAcceleratorTable 函數(shù)而創(chuàng)建。
返回值:若函數(shù)調(diào)用成功,則返回非零值,若函數(shù)調(diào)用失敗,則返回值為零。若要獲得更多的錯(cuò)誤信息,可以調(diào)用GetLastError函數(shù)。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭文件:Windows.h;庫(kù)文件:user32.lib。
LoadAccelerators
函數(shù)功能:調(diào)入加速鍵表。該函數(shù)調(diào)入指定的加速鍵表。
函數(shù)原型:HACCEL LoadAccelerators(HINSTANCE hlnstance,LPCTSTR lpTableName);
參數(shù):
hlnstance:模塊的一個(gè)事例的句柄,該模塊的可執(zhí)行文件中包含將要調(diào)入的加速鍵表。
IpTableName:指向一個(gè)以空結(jié)尾的字符串的指針,該字符串包含了即將調(diào)入的加速鍵表的名字。另一種可選的方案是,該參數(shù)可以在加速鍵表資源的低位字中指定資源標(biāo)識(shí)符,而高位字中全零。MADEINTRESOURCE宏可被用于創(chuàng)建該值。
返回值:若函數(shù)調(diào)用成功,則返回非零值。若函數(shù)調(diào)用失敗,則返回值為零。若要獲得更多的錯(cuò)誤信息,可以調(diào)用GetLastError函數(shù)。
備注:若加速鍵表尚未裝入,該函數(shù)可從指定的可執(zhí)行文件中將它裝入。從資源中裝入的加速鍵表,在程序結(jié)束時(shí)可自動(dòng)釋放。Windows CE:資源不被拷貝到RAM中,因而不能被修改。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭文件:winuser.h;庫(kù)文件:user32.lib;Uncode:在Windows NT上實(shí)現(xiàn)為Unicode和ANSI兩種版本。
TranslateAccelerator
函數(shù)功能:翻譯加速鍵表。該函數(shù)處理菜單命令中的加速鍵。該函數(shù)將一個(gè)WM-DEYDOUN或WM-SYSDEYDOWN消息翻譯或一個(gè)WM-COMMAND或WM-SYSCOMMAND消息(如果在給定的加速鍵表中有該鍵的入口),然后將WM-COMMAND或WM-SYSCOMMAND消息直接送到相應(yīng)的窗口處理過(guò)程。
TranslateAccelerator直到窗口過(guò)程處理完消息后才返回。
函數(shù)原型:int TranslateAccelerator(HWND hWnd,HACCEL hAccTable,LPMSG IpMsg);
參數(shù):
hWnd:窗口句柄,該窗口的消息將被翻譯。
hAccTable:加速鍵表句柄。加速鍵表必須由LoadAccelerators函數(shù)調(diào)用裝入或由CreateAccd_eratorTable函數(shù)調(diào)用創(chuàng)建。
LpMsg:MSG結(jié)構(gòu)指針,MSG結(jié)構(gòu)中包含了從使用GetMessage或PeekMessage函數(shù)調(diào)用線程消息隊(duì)列中
得到的消息內(nèi)容。
返回值:若函數(shù)調(diào)用成功,則返回非零值;若函數(shù)調(diào)用失敗,則返回值為零。若要獲得更多的錯(cuò)誤信息,可調(diào)用GetLastError函數(shù)。
備注:為了將該函數(shù)發(fā)送的消息與菜單或控制發(fā)送的消息區(qū)別開(kāi)來(lái),使WM_COMMAND或WM_SYSCOMMAND消息的wP
aram參數(shù)的高位字值為1。用于從窗口菜單中選擇菜單項(xiàng)的加速鍵組合被翻譯成WM-SYSCOMMAND消息:所有其他的加速鍵組合被翻譯成WM-COMMAND。若TransLateAccelerator返回非零值且消息已被翻譯,應(yīng)用程序就不能調(diào)用TranslateMessage函數(shù)對(duì)消息再做處理。每個(gè)加速鍵不一定都對(duì)應(yīng)于菜單命令。若加速鍵命令對(duì)應(yīng)于菜單項(xiàng),則WM-INITMEMU和WM-INITMENUPOPUP消息將被發(fā)送到應(yīng)用程序,就好像用戶正試圖顯示該菜單。然而,如下的任一條件成立時(shí),這些消息將不被發(fā)送:
窗口被禁止,菜單項(xiàng)被禁止。
加速鍵組合無(wú)相應(yīng)的窗口菜單項(xiàng)且窗口己被最小化。鼠標(biāo)抓取有效。有關(guān)鼠標(biāo)抓取消息,參看SetCapture函數(shù)。若指定的窗口為活動(dòng)窗口且窗口無(wú)鍵盤焦點(diǎn)(當(dāng)窗口最小化時(shí)一般是這種情況),TranslatMssage翻譯WM-SYSDEYUP和WM-SYSKEYDOWN消息而不是WM-DEYUP和WM-DEYDOWN消息。
當(dāng)按下相應(yīng)于某菜單項(xiàng)的加速鍵,而包含該菜單的窗口又已被最小化時(shí),TranslateMessage不發(fā)送WM-COMMAND消息。但是,若按下與窗口菜單或某單項(xiàng)的任一項(xiàng)均不對(duì)應(yīng)的加速鍵時(shí),TranslateMessage將發(fā)送一WM-COMMAND消息,即使窗口己被最小化。
Windows CE:所有的加速鍵消息被翻譯成WM-COMMAND消息;Windows CE不支持WM-SYSCOMMAND消息。
速查:Windows NT:3.1 及以上版本;Windows:95及以上版本:Windows CE:1.0及以上版本;頭文件:windows.h;庫(kù)文件:user32.lib; Unicode:在Windows NT實(shí)現(xiàn)為Unicode和ANSI兩種版本。