c语言 windows程序设计之键盘消息处理

一、应用程序从Windows接收的关于键盘事件的消息可以分为按键和字符两类。

键盘只有唯一的A键,按下该键是一次按键,释放该键也是一次按键。但是键盘也是能产生可显示字符或控制字符的输入设备。例如,根据Ctrl、 Shift和Caps Lock键的状态,A键能产生几个字符。通常情况下,此字符为小写a。如果按下Shift键或者打开了Caps Lock,则该字符就变成大写A。如果按下了Ctrl,则该字符为Ctrl-A(它在ASCII中有意义,但在Windows中可能是某事件的键盘快捷键)。在一些键盘上,A按键之前可能有「死字符键(dead-character key)」或者Shift、Ctrl或者Alt的不同组合,这些组合可以产生带有音调标记的小写或者大写,例如,à、á、

对产生可显示字符的按键组合,Windows不仅给程序发送按键消息,而且还发送字符消息。有些键不产生字符,这些键包括shift键、功能键、光标移动键和特殊字符键如Insert和Delete。对于这些键,Windows只产生按键消息。


二、 WM_KEYDOWN 、WM_KEYUP 或者 WM_SYSKEYDOWN、WM_SYSKEYUP是成对出现的,所以一般我们处理DOWN消息

 while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }


上述是一段消息循环代码,在处理DOWN消息时,若按下是能产生可显示字符的键,则在TranslateMessage()函数后会产生一个WM_CHAR消息,并插入到刚刚的DOWN消息之后,所以在处理键盘事件时,一般为不产生字符的按键使用WM_KEYDOWN消息,而产生字符的事件,我们在WM_CHAR中处理


三、对于一些复合键,如Ctrl+s,……

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值