C++ OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags)函数对字母、数字按键无响应/nChar恒为229问题--已解决

问题及解决:

我在调试一个程序的按键响应事件时,用到了OnKeyDown函数。打好断点调试,遇到了两个问题:一是按字母和数字键时毫无反应;二是按一些符号键时,尽管按键不同,nChar的值都为229。

解决方法:只需改为(微软自带的)英文输入法之后再按键即可。

函数解释:

OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)是 MFC提供的一个消息处理函数,用于响应键盘按下事件。以下是参数解释:

UINT nChar:

        表示被按下的键的虚拟键码(Virtual-Key Code)。例如,字母'A'的虚拟键码是0x41,回车键的虚拟键码是VK_RETURN。

虚拟键码是用于标识各种键盘按键的常量值,定义在Windows头文件中,例如winuser.h。

UINT nRepCnt:

        表示键被按住时自动重复的次数。如果用户一直按住某个键不放,这个值将大于1。通常,初次按键时这个值为1,当键继续保持按住状态时,该值会增加。

UINT nFlags:

        包含有关于按键事件的附加信息的标志位。该参数可以包含重复计数、扫描码、扩展键标志等信息,此处略。

其他补充:

nChar为229是因为按下的这个键的输入先被输入法处理了,之后会统一返回229

即使引用了winuser.h,也仍需自己定义字母和数字的虚拟键码,如:#define VK_A 0x41

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值