WM_KEYDOWN消息
按下非系统键时,使用键盘焦点发布到窗口。 非系统键是在未按下 Alt 键时按下的键。
#define WM_KEYDOWN 0x0100
参数
-
wParam
-
非系统密钥的虚拟密钥代码。 请参阅 虚拟密钥代码。
-
lParam
-
重复计数、扫描代码、扩展键标志、上下文代码、以前的键状态标志和转换状态标志,如下所示。
Bits 含义 0-15 当前消息的重复计数。 该值是由于用户按住键而自动重复击键的次数。 如果击键的保持时间足够长,则发送多个消息。 但是,重复计数不是累积的。 16-23 扫描代码。 该值取决于 OEM。 24 指示键是扩展键,例如在增强型 101 键或 102 键键盘上显示的右侧 Alt 键和 Ctrl 键。 如果是扩展键,则值为 1;否则为 0。 25-28 保留;请勿使用。 29 上下文代码。 对于 WM_KEYDOWN 消息,该值始终为 0。 30 上一个键状态。 如果键在发送消息之前关闭,则值为 1;如果键已打开,则值为 0。 31 转换状态。 对于 WM_KEYDOWN 消息,该值始终为 0。 有关更多详细信息,请参阅 击键消息标志。
返回值
如果应用程序处理此消息,则应返回零。
示例
LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
if (wParam == VK_ESCAPE)
{
if (isFullScreen)
{
GoPartialScreen();
}
}
break;
// ...
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
GitHub 上的 Windows 经典示例中的例子。
备注
如果按下 F10 键, DefWindowProc 函数将设置内部标志。 当 DefWindowProc 收到WM_KEYUP消息时,函数会检查内部标志是否已设置,如果是,则向顶级窗口发送WM_SYSCOMMAND消息。 消息的 WM_SYSCOMMAND 参数设置为 SC_KEYMENU。
由于自动重现功能,在发布 WM_KEYUP 消息之前,可能会发布多个 WM_KEYDOWN 消息。 可以使用上一个键状态 (位 30) 来确定 WM_KEYDOWN 消息是指示第一次向下转换还是重复向下转换。
对于增强型 101 和 102 键键盘,扩展键是键盘main部分中的右 ALT 和 CTRL 键;数字键盘左侧群集中的 INS、DEL、HOME、END、PAGE UP、PAGE 向下和箭头键;数字键盘中除号 (/) 和 Enter 键。 其他键盘可能支持 lParam 参数中的扩展键位。
应用程序必须将 wParam 传递到 TranslateMessage ,而无需对其进行更改。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|