击键消息的【lParam的】参数包含有关生成消息的按键的其他信息。该信息包括重复计数,扫描码,扩展密钥标志,上下文代码,先前的密钥状态标志和过渡状态标志。下图显示了【lParam的】参数中这些标志和值的位置。
应用程序可以使用以下值来操作击键标志:
值 | 含义 |
KF_ALTDOWN | 操作ALT键标志,表示按ALT键。 |
KF_DLGMODE | 操纵对话模式标志,指示对话框是否处于活动状态。 |
KF_EXTENDED | 操纵扩展键标志。 |
KF_MENUMODE | 操作菜单模式标志,指示菜单是否处于活动状态。 |
KF_REPEAT | 操纵重复计数。 |
KF_UP | 操纵过渡状态标志。 |
重复计数
您可以检查重复计数以确定击键消息是否表示多个击键。当键盘生成WM_KEYDOWN或WM_SYSKEYDOWN消息的速度比应用程序处理更快时,系统会增加计数。这通常发生在用户按住一个足够长的键以启动键盘的自动重复功能时。用系统消息队列填充所产生的按键消息,系统将消息组合成一个单一的按键消息,并增加重复计数。释放键不能启动自动重复功能,因此WM_KEYUP和WM_SYSKEYUP消息的重复计数始终设置为1。
扫描码
扫描代码是用户按下键时键盘硬件产生的值。它是一个与设备相关的值,用于标识按下的键,而不是由键表示的字符。应用程序通常忽略扫描代码。相反,它使用与设备无关的虚拟密钥代码来解释击键消息。
扩展密钥标志
扩展密钥标志指示是否从增强型键盘上的其中一个附加键发起击键消息。扩展键由键盘右侧的ALT和CTRL键组成;集群中的INS,DEL,HOME,END,PAGE UP,PAGE DOWN和箭头键在数字键盘的左侧; NUM LOCK键; BREAK(CTRL + PAUSE)键打印SCRN键;和数字键盘中的除数(/)和ENTER键。如果密钥是扩展密钥,则设置扩展密钥标志。
上下文代码
上下文代码指示当产生击键消息时ALT键是否关闭。如果ALT键关闭,代码为1,如果ALT键为“0”,则代码为1。
以前的关键国旗
先前的键状态标志指示生成按键消息的键是否先前已经上升或下降。如果密钥以前已经关闭,则为1,如果密钥以前为0,则为1。您可以使用此标志来识别键盘自动重复功能生成的按键消息。对于自动重复功能生成的WM_KEYDOWN和WM_SYSKEYDOWN按键消息,此标志设置为1。对于WM_KEYUP和WM_SYSKEYUP邮件,它始终设置为0。
过渡国旗
转移状态标志指示是按键还是释放键产生击键消息。对于WM_KEYDOWN和WM_SYSKEYDOWN邮件,此标志始终设置为0;对于WM_KEYUP和WM_SYSKEYUP邮件,它始终设置为1。