WM _ CHAR 消息

TranslateMessage函数转换 WM _ KEYDOWN消息时,将键盘焦点发送到窗口。 WM _ CHAR 消息包含按下的键的字符代码。

#define WM_CHAR                         0x0102

parameters

wParam

键的字符代码。

lParam

重复计数、扫描代码、扩展键标志、上下文代码、以前的键状态标志和转换状态标志,如下表所示。

Bits 含义
0-15 当前消息的重复计数。 值是用户按住键后自动复制击键次数。 如果击键时间足够长,则发送多条消息。 但是,重复计数不是累积的。
16-23 扫描代码。 该值取决于 OEM。
24 指示该键是扩展键,如右侧 Alt 键和 Ctrl 键(显示在增强的 101 或 102 键键盘上)。 如果它是扩展键,则值为 1;否则为 0。
25-28 保留;不使用 。
29 上下文代码。 如果在按下 Alt 键时按住 ALT 键,则值为 1;否则,值为 0。
30 以前的密钥状态。 如果在发送消息之前键关闭,则值为 1;如果键已启动,则值为 0。
31 转换状态。 如果正在释放密钥,则值为 1;如果正在按下键,则值为 0。

有关详细信息,请参阅 击键消息标志

返回值

如果应用程序处理此消息,则它应返回零。

示例

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
   
    // ...

    case WM_CHAR:
        OnKeyPress(wParam);
        break;

    default:
        return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}

来自 Windows经典示例的示例GitHub。

备注

WM _ CHAR 消息 使用 Unicode 转换格式 (UTF) -16。

按下的键和生成的字符消息之间不一定有一对一的对应关系,因此 lParam 参数的高序字中的信息通常对应用程序没有用。 高序字中的信息仅适用于发布 WM _ CHAR 消息之前的最新 WM _ KEYDOWN消息。

对于增强的 101 键和 102 键键盘,扩展键是键盘主部分上的右 ALT 和右 CTRL 键;数字键盘左侧群集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和箭头键;和数字键盘 (/) 和 ENTER 键。 其他一些键盘可能支持 lParam 参数中的扩展键位。

WM _ UNICHAR消息与 WM _ CHAR 相同,只不过它使用 UTF-32。 它旨在向 ANSI 窗口发送或发布 Unicode 字符,并可以处理 Unicode 补充平面字符。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Winuser.h (包括 Windows.h)

另请参阅

引用

TranslateMessage

WM _ KEYDOWN

WM _ UNICHAR

概念性

键盘输入