TranslateMessage 函数 (winuser.h)

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

语法

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

参数

[in] lpMsg

类型: const MSG*

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

返回值

类型: BOOL

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

如果消息WM_KEYDOWN、WM_KEYUPWM_SYSKEYDOWNWM_SYSKEYUP,则无论转换如何,返回值都是非零值。

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

注解

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

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

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

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

示例

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

要求

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

另请参阅