windows键盘消息

键盘消息

键盘消息分为击键消息和字符消息

击键消息,如
WM_KEYDOWN
WM_KEYUP
WM_SYSKEYDOWN
WM_SYSKEYUP

字符消息,如
WM_CHAR
WM_DEADCHAR
WM_SYSCHAR
WM_SYSDEADCHAR

//带有SYS表示一般交给DefWindowProc处理,如包含Alt的击键

击键消息

以WM_KEYDOWN 消息为例:

消息含义:
当一个非系统按键被按下的时候,发送到键盘焦点所在窗口的消息。
非系统按键指的是没有与 ALT 键同时按下的任何按键。


消息定义:


#define WM_KEYDOWN 0x0100


参数:
wParam:指定该按键的虚拟键代码。
lParam:指定重复计数、OEM 扫描码、扩展键标记、内容代码、先前状态和转换状态,具体含义和表示方法如下:

含义
0-151. 当前消息被重复的次数
2. 当用户按下按键不松开时,Windows 会将该键产生的所有 WM_KEYDOWN 消息合称为一个消息,并增加该字段的值
3. 重复计数大于 1 表明此时连续击键的速度快于程序的处理能力
16-23OEM 扫描码(键盘硬件产生的代码)
241. 指定该按键是否扩展键
2. 比如 IBM 加强型键盘有 101 或 102 个键,右边的 ALT 和 CTRL 就是扩展键
25-28系统保留
29内容代码:对于 WM_KEYDOWN 消息来说,这个值总是 0
30先前状态:在消息发送前如果按键是被按下的话该值是 1,否则是 0
31转换状态:对于 WM_KEYDOWN 消息来说,这个值总是 0

键盘扫描码:是基于键盘硬件真实的扫描码,可能因键盘的厂家,型号不同而有所不同
虚拟键代码:Microsoft为消除扫描码弊端,把各个按键的扫描码映射成的代码(不区分大小写,即大小写字符虚拟键代码相同)

字符消息

击键消息通过  TranslateMessage()  函数转换为字符消息。

参数:
wParam:ANSI字符码或Unicode字符码
lParam:同击键消息

//如果注册窗口类时调用的  RegisterClass  被宏定义为  RegisterClassW  则表示使用的是Unicode字符码,如果被宏定义为  RegisterClassA则表示使用的是ANSI字符码。也可以通过  IsWindowUnicode()函数判断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值