TranslateAcceleratorA 函数 (winuser.h)
处理菜单命令的快捷键。 该函数将 WM_KEYDOWN 或 WM_SYSKEYDOWN 消息转换为 WM_COMMAND 或 WM_SYSCOMMAND 消息(如果指定快捷键表中有项),然后将 WM_COMMAND 或 WM_SYSCOMMAND 消息直接发送到指定的窗口过程。 TranslateAccelerator 在窗口过程处理消息之前不会返回。
语法
int TranslateAcceleratorA(
[in] HWND hWnd,
[in] HACCEL hAccTable,
[in] LPMSG lpMsg
);
参数
[in] hWnd
类型:HWND
要翻译其消息的窗口的句柄。
[in] hAccTable
类型:HACCEL
加速器表的句柄。 加速键表必须由对 LoadAccelerators 函数的调用加载,或者由对 CreateAcceleratorTable 函数的调用创建。
[in] lpMsg
类型:LPMSG
指向 MSG 结构的指针,该结构包含使用 GetMessage 或 PeekMessage 函数从调用线程的消息队列中检索的消息信息。
返回值
类型:int
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。
言论
为了区分此函数从菜单或控件发送的消息,WM_COMMAND 或 WM_SYSCOMMAND 消息的 wParam 参数的高序单词包含值 1。
用于从 窗口选择项的快捷键组合 菜单将转换为 WM_SYSCOMMAND 消息;所有其他快捷键组合将转换为 WM_COMMAND 消息。
TranslateAccelerator 返回非零值并转换消息时,应用程序不应使用 TranslateMessage 函数再次处理消息。
加速器不需要与菜单命令相对应。
如果快捷键命令对应于菜单项,则应用程序将 WM_INITMENU 发送并 WM_INITMENUPOPUP 消息,就像用户尝试显示菜单一样。 但是,如果存在以下任何条件,则不会发送这些消息:
- 窗口处于禁用状态。
- 快捷键组合与 窗口 菜单上的项不对应,并且窗口最小化。
- 鼠标捕获生效。 有关鼠标捕获的信息,请参阅 SetCapture 函数。
如果在最小化拥有菜单的窗口时发生与菜单项对应的加速键击,TranslateAccelerator 不会发送 WM_COMMAND 消息。 但是,如果快捷键击发生与窗口菜单或 窗口 菜单中任何项不匹配的键击,该函数也会发送一条 WM_COMMAND 消息,即使窗口最小化也是如此。
例子
有关示例,请参阅 为字体属性创建加速器。
注意
winuser.h 标头将 TranslateAccelerator 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winuser.h (包括 Windows.h) |
库 | User32.lib |
DLL | User32.dll |
另请参阅
概念
参考