TranslateAccelerator函数

TranslateAccelerator(msg.hwnd, hAccelTable, &msg)

我们转到定义,

int

WINAPI
TranslateAcceleratorW(
    _In_ HWND hWnd,//窗口句柄。该窗口的消息将被翻译
    _In_ HACCEL hAccTable,//快捷键表句柄。快捷键表由前面LoadAccelerators函数调用装入

    _In_ LPMSG lpMsg);//结构指针。MSG结构中包含了从使用GetMessage调用线程消息队列中得到的消息内容


当应用程序运行时,用户按下快捷键,这样就产生了一个按键消息,那么Windows是怎么样把它转化为快捷键响应的消息呢?这就需要使用TranslateAccelerator函数。

TranslateAccelerator函数主要的作用就是把消息跟快捷键表里定义的按键进行比较,如果发现有快捷键,就会把这个按键消息转换为WM_COMMAND或者WM_SYSCOMMAND消息给窗口的消息处理函数发送过去。


返回值:

如果函数调用成功(快捷键表里定义的按键如果发现有消息的快捷键)就返回非0值,并且就会把这个按键消息转换为WM_COMMAND或者WM_SYSCOMMAND消息给窗口的消息处理函数发送过去。如果失败(如果发现有消息的快捷键)就返回0值

备注

:为了将该函数发送的消息与菜单或控制发送的消息区别开来,使WM_COMMAND或WM_SYSCOMMAND消息的wParam参数的高位字值为1。用于从窗口菜单中选择菜单项的快捷键组合被翻译成WM_SYSCOMMAND消息:所有其他的快捷键组合被翻译成WM_COMMAND。

若TransLateAccelerator返回非零值且消息已被翻译,应用程序就不能调用TranslateMessage函数对消息再做处理。每个快捷键不一定都对应于菜单命令。若加速键命令对应于菜单项,则WM_INITMENU和WM_INITMENUPOPUP消息将被发送到应用程序,就好像用户正试图显示该菜单。然而,如下的任一条件成立时,这些消息将不被发送:窗口被禁止,菜单项被禁止。

你可能感兴趣的:(Windows窗口函数)