TranslateMessageEx 函数

将虚拟密钥消息转换为字符消息。 字符消息将发布到调用线程的消息队列,以便下次线程调用 GetMessagePeekMessage 函数时读取。

语法

WINUSERAPI
BOOL
WINAPI
TranslateMessageEx(
    _In_ CONST MSG *lpMsg,
    _In_ UINT flags);

参数

lpMsg [in]

指向 MSG 结构的指针,该结构包含使用 GetMessagePeekMessage 函数从调用线程的消息队列检索到的消息信息。

flags [in]

函数的行为。

如果设置了位 0,则菜单处于活动状态。 在此模式下,不处理 Alt+数字键盘组合键。

如果设置了位 1, 则 TranslateMessageEx 在未将WM_CHAR或WM_SYSCHAR发布到消息循环时返回 FALSE。

如果设置了第 2 位,则键盘状态不会更改 (Windows 10版本 1607 及更新)

保留 (到 31) 的所有其他位。

返回值

返回布尔值。 如果消息 (转换,即字符消息将发布到线程的消息队列) ,则返回值为非零值。

TranslateMessage 不同, 如果 TranslateMessageEx 不发布WM_CHAR,则 TranslateMessageEx 将返回 FALSE。

如果消息未 (也就是说,字符消息不会发布到线程的消息队列) ,则返回值为零。

-言论

TranslateMessage 函数不会修改 lpMsg 参数指向的消息。

WM_KEYDOWNWM_KEYUP 组合生成 WM_CHARWM_DEADCHAR 消息。 WM_SYSKEYDOWNWM_SYSKEYUP 组合生成 WM_SYSCHARWM_SYSDEADCHAR 消息。

TranslateMessage 仅为键盘驱动程序映射到 ASCII 字符的键生成 WM_CHAR 消息。

如果应用程序出于其他目的处理虚拟密钥消息,则它们不应调用 TranslateMessage。 例如,如果 TranslateAccelerator 函数返回非零值,则应用程序不应调用 TranslateMessage。 请注意,应用程序负责检索输入消息并将其调度到对话框中。 大多数应用程序为此使用main消息循环。 但是,若要允许用户移动到 并使用键盘选择控件,应用程序必须调用 IsDialogMessage。 有关详细信息,请参阅 对话框键盘接口

此函数未在 SDK 标头中定义,必须由调用方声明。 此函数是从 user32.dll 导出的。