WM_SYSKEYUP

【勇芳软件工作室】汉化HomePreviousNext

当用户释放在按住ALT键的同时按下的键时,WM_SYSKEYUP消息会发送到具有键盘焦点的窗口。当窗口当前没有键盘焦点时也会发生;在这种情况下,WM_SYSKEYUP消息被发送到活动窗口。接收消息的窗口可以通过检查【lKeyData】参数中的上下文代码来区分这两个上下文。

WM_SYSKEYUP

nVirtKey = (int) wParam; //虚拟键代码

lKeyData = lParam; //关键数据

参数

【nVirtKey】

价值【wParam中】.指定正在释放的密钥的虚拟密钥代码。

【lKeyData】

价值【lParam的】.指定重复计数,扫描码,扩展密钥标志,上下文代码,先前的密钥状态标志和转换状态标志,如下表所示:

描述
0-15指定重复计数。该值是由于用户按住键而重复键击的次数。对于WM_SYSKEYUP消息,重复计数总是一个。
16-23指定扫描码。价值取决于原始设备制造商(OEM)。
24指定该键是否为扩展键,例如增强型101-或102键键盘上显示的右侧ALT和CTRL键。如果是扩展密钥,则该值为1;否则为0。
25-28Reserved; do not use.
29指定上下文代码。当钥匙释放时,如果ALT键关闭,则值为1;如果WM_SYSKEYDOWN消息发布到活动窗口,则为0,因为没有窗口具有键盘焦点。
30指定以前的键状态。WM_SYSKEYUP消息的值始终为1。
31指定转换状态。WM_SYSKEYUP消息的值始终为1。

返回值

处理此消息时,应用程序应返回零。

默认动作

如果F10键或ALT键被释放,DefWindowProc功能会向顶级窗口发送WM_SYSCOMMAND消息。消息的【wParam中】参数设置为SC_KEYMENU。

备注

当上下文代码为零时,消息可以传递给TranslateAccelerator函数,它将处理它,就像它是普通键消息而不是系统字符键消息一样。即使活动窗口没有键盘焦点,这也允许加速键与活动窗口一起使用。

对于增强的101-和102键键盘,扩展键是键盘主要部分的右ALT和CTRL键;集群中的INS,DEL,HOME,END,PAGE UP,PAGE DOWN和箭头键在数字键盘的左侧;和数字键盘中的除数(/)和ENTER键。其他键盘可能支持【lKeyData】参数中的扩展密钥位。

对于非美国增强的102键键盘,正确的ALT键作为CTRL + ALT键处理。下表显示用户按下并释放此键时产生的消息顺序:

信息虚拟键码
WM_KEYDOWNVK_CONTROL
WM_KEYDOWNVK_MENU
WM_KEYUPVK_CONTROL
WM_SYSKEYUPVK_MENU

也可以看看

DefWindowProc, TranslateAccelerator, WM_SYSCOMMAND, WM_SYSKEYDOWN