处理 WM_KEYDOWN,WM_KEYUP,WM_SYSKEYDOWN,WM_SYSKEYUP 信息时lParam 参数的值的说明

在处理 WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN 和 WM_SYSKEYUP 信息时,wParam 是被按下健的虚拟键码,而 lParam 参数时保存了比较多的信息,下面是对这些信息的说明:

0 - 15 位是指按键的重复次数,什么是按键的重复次数呢?
假如你按下了字母键 A, 此时系统把信息发给你的程序去处理,但此时你的程序还在处理其他的信息,在还没有处理这个信息之前,你又按下了字母键 A, 这时系统不把在发一个消息到你的应用程序中去,而是在前一个信息的重数次数上面加1,重复次数就变成了2,如果你的程序还未处理这个信息而你又按了字母键 A,这个重复次数就会不停的添加。
在的程序处理此信息时,可以检查一下这个重复次数的值,以便进进行相应的处理,也可以忽略此信息。

16 - 23 位是OEM(Original Equipment Manufacturer,原设备制造商)码,此代码是由键盘硬件生成的代码,此代码表示键盘上的某一个键,这是与硬相关的代码,比如16表示Q键,17表示W键,18表示E键等,但是如果在以后的键盘设计中,把Q键位置放到其他的位置,那16就不表示Q键了,因为这是与设备相关的,所以我们在程序中一盘不使用OEM代码,而是使用虚拟键码,因为这是与设备无关的代码。

24 位:指示一个键是否是一个扩充键,什么是扩充键?
现在我们使用的键盘一般都是101或102键的键盘,原来的键盘是没有这么多键,所以现在多出来的键就是扩充键,当一个键是一个扩充键时,此位的值为1,否则为0。
101键或102键的键盘上,方向键,右边的 alt 键,ctrl 键等都是扩充键。

25,26,27,28 位还未使用。

29 位:这个位的值表示是什么意思还不太明白。

30 位:指示键的先前状态,什么是键的先前状态呢?
假如你按了一个键A,此时发送一条消息到应用程序,发送这条信息之前这个键的状态是按下的还是是未按下的呢,如果是按下的,此位的值就为1,否则为0。
当你第一次按下一个按时,这时这个值为0,因为你按发送消息前你的键未按下,但是当你按下键一段时间不释放他,这此系统就会不停的向程序发送信息,这时这个值就为1,因为发送信息时,这个键是按下的。

31 位:如果键被按下,此位的值为1,否则为0

转载于:https://www.cnblogs.com/kuku/archive/2004/12/26/82129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值