TranslateAccelerator

【勇芳软件工作室】汉化HomePreviousNext

TranslateAccelerator功能处理菜单命令的加速键。该函数将WM_KEYDOWNWM_SYSKEYDOWN消息转换为WM_COMMANDWM_SYSCOMMAND消息(如果在指定的加速器表中有密钥条目),然后将WM_COMMAND或WM_SYSCOMMAND消息直接发送到相应的窗口程序。TranslateAccelerator不会返回,直到窗口过程处理消息。

int TranslateAccelerator(

HWND 【的hWnd】,//目标窗口的句柄
HACCEL 【hAccTable】,//加速器表的句柄
LPMSG 【LPMSG】//具有消息结构的地址
); 

参数

【的hWnd】

标识要翻译其消息的窗口。

【hAccTable】

标识一个加速器表。加速表必须通过调用LoadAccelerators函数加载,或者通过调用CreateAcceleratorTable功能创建。

【LPMSG】

指向MSG结构,其中包含使用GetMessagePeekMessage功能从调用线程的消息队列中检索的消息信息。

返回值

如果函数成功,返回值为TRUE。

如果函数失败,返回值为FALSE。要获取扩展错误信息,请调用GetLastError.

备注

为了区分该函数从菜单或控件发送的消息发送的消息,WM_COMMANDWM_SYSCOMMAND消息的【wParam中】参数的高位字包含值1。

用于从窗口菜单中选择项目的加速键组合将转换为WM_SYSCOMMAND消息;所有其他加速键组合被翻译成WM_COMMAND消息。

TranslateAccelerator返回非零值并且消息被翻译时,应用程序不应该使用TranslateMessage函数来再次处理该消息。

加速器不需要对应于菜单命令。

如果加速器命令对应于菜单项,则应用程序将发送WM_INITMENUWM_INITMENUPOPUP消息,就像用户尝试显示菜单一样。但是,如果存在以下任何条件,则不会发送这些消息:

*窗口被禁用。

*菜单项禁用。

*加速键组合不符合窗口菜单上的项目,窗口最小化。

*鼠标捕获有效。有关鼠标捕获的信息,请参阅SetCapture功能。

如果指定的窗口是活动窗口,并且没有窗口具有键盘焦点(通常情况下,如果窗口最小化),TranslateAccelerator翻译WM_SYSKEYUP和WM_SYSKEYDOWN消息,而不是WM_KEYUP和WM_KEYDOWN消息。

如果当拥有菜单的窗口最小化时出现对应于菜单项的加速器击键,TranslateAccelerator不发送WM_COMMAND消息。但是,如果出现与窗口菜单或窗口菜单中的任何项目不匹配的加速器击键,即使窗口最小化,该函数也会发送WM_COMMAND消息。

也可以看看

CreateAcceleratorTable, GetMessage, LoadAccelerators, MSG, PeekMessage, SetCapture, TranslateMessage, WM_COMMAND, WM_INITMENU, WM_INITMENUPOPUP, WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSCOMMAND