translateMessage 函数 (winuser.h)

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

语法

BOOL TranslateMessage(
  [in] const MSG *lpMsg
);

参数

[in] lpMsg

类型: const MSG*

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

返回值

类型: BOOL

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

如果消息 是WM_KEYDOWNWM_KEYUPWM_SYSKEYDOWNWM_SYSKEYUP,则无论翻译如何,返回值都是非零的。

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

注解

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

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

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

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

示例

有关示例,请参阅 创建消息循环

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 ext-ms-win-ntuser-message-l1-1-0 (在 Windows 8) 中引入

另请参阅