win32开发(按键消息)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    对于一个应用来说,按键和鼠标都是基本的消息。当然,win32也需要独立处理按键消息和鼠标消息。今天,我们就讨论一下按键消息。一般认为,当键盘上一个key按下去之后,os会给app发送三个消息,分别是WM_KEYDOWN、WM_CHAR、WM_KEYUP。WM_KEYDOWN是在key按下去的一刹那发送的,WM_CHAR是os通知app按下去的字符是什么,WM_KEYUP则是key重启返回的时候发送的。


    一般情况下,如果是普通的字符信息,比如说0-9、a-z,或者是A-Z,一般只要处理WM_CHAR信息就可以了。但是对于具有特殊含义的key,比如说F1-F12,或者是ctrl、shift、alt、tab、windows这样的key,WM_KEYDOWN和WM_KEYUP也是需要处理的,因为这些按键通常是作为特殊按键和其他按键一起配合使用的,所以在WM_KEYDOWN的时候就要做好状态标记,这样有利于后面的应用。


    为了验证我们的想法,大家可以做这样一个实验,

			case WM_KEYDOWN:
				//MessageBox(NULL, "down", "tips", 0);
				break;

			case WM_KEYUP:
				//MessageBox(NULL, "up", "tips", 0);
				break;

			case WM_CHAR:
				MessageBox(NULL, "char", "tips", 0);
				break;
    这是在WndProc里面添加的消息函数。大家可以先将MessageBox都注释掉,再一个一个打开。这个时候,就可以观察一下,当一个key按下去的时候,是不是真的会有对话框弹出来。如果对话框弹出来,尽量用鼠标来单击,这样可以避免key的影响。


    这里的key只是处理普通的字符,那如何处理输入法给出的字符串信息呢,其实win32在这方面也做好了准备。这个信息就是WM_IME_CHAR相关的信息。大家只要做好WM_IME_CHAR方面的处理,就可以收到输入法提供的字符串信息了。类似的消息还有WM_IME_KEYDOWN、WM_IME_KEYUP、WM_IME_COMPOSITION等等,大家可以具体问题具体分析。

		case WM_IME_CHAR:
			break;
    大家可以自己实际操作试一试。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值