zoukankan      html  css  js  c++  java
  • 处理 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

  • 相关阅读:
    LeetCode 40. 组合总和 II(Combination Sum II)
    LeetCode 129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
    LeetCode 60. 第k个排列(Permutation Sequence)
    LeetCode 47. 全排列 II(Permutations II)
    LeetCode 46. 全排列(Permutations)
    LeetCode 93. 复原IP地址(Restore IP Addresses)
    LeetCode 98. 验证二叉搜索树(Validate Binary Search Tree)
    LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
    一重指针和二重指针
    指针的意义
  • 原文地址:https://www.cnblogs.com/kuku/p/82129.html
Copyright © 2011-2022 走看看