第六章 键盘part1

6.1键盘基础

键盘输入以消息的形式传递给程序的窗口消息处理程序。

忽略键盘:

虽然呼叫程序菜单的按键将通过窗口的窗口消息处理程序,但通常内定的处理方式是将按键传递给DefWindowProc。

谁获得了焦点:

接收特定键盘事件的窗口具有输入焦点。输入焦点的概念与活动窗口的概念很相近。有输入焦点的窗口是活动窗口或活动窗口的衍生窗口。窗口消息处理程序通过拦截WM_SETFOCUS和WM_KILLFOCUS消息来判定它的窗口何时拥有输入焦点。

队列和同步:

首先在系统消息队列中保存消息,然后将它们放入应用程序的消息队列。

按键和字符:

应用程序从Windows接收的关于键盘事件的消息可以分为按键和字符两类。对产生可显示字符的按键组合,Windows不仅给程序发送按键消息,而且还发送字符消息。有些键不产生字符,这些键包括shift键、功能键、光标移动键和特殊字符键如Insert和Delete。对于这些键,Windows只产生按键消息。

 

 

6.2按键消息

按下一个键时, Windows把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入有输入焦点的窗口的消息队列;当您释放一个键时,Windows把WM_KEYUP或者WM_SYSKEYUP消息放入消息队列中。通过呼叫GetMessageTime,您可以获得按下或者释放键的相对时间。

系统按键与非系统按键:

系统按键对Windows比对Windows应用程序更加重要。程序通常忽略WM_SYSKEYUP和WM_SYSKEYDOWN消息,并将它们传送到DefWindowProc。

虚拟键码:

虚拟键码保存在WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP消息的wParam参数中。使用的大多数虚拟键码的名称在WINUSER.H表头文件中都定义为以VK_开头。

lParam信息:

在四个按键消息(WM_KEYDOWN 、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP)中,wParam消息参数含有上面所讨论的虚拟键码,而lParam消息参数则含有对了解按键非常有用的其它信息。具体信息内容如下:

1.重复计数:窗口消息处理程序不够快,以致不能处理自动重复速率下的按键消息,Windows就把几个WM_KEYDOWN或者WM_SYSKEYDOWN消息组合到单个消息中,并相应地增加重复计数。

2.OEM扫描码

3.扩充键旗标:如果按键结果来自IBM增强键盘的附加键之一, 那么扩充键旗标为1。

4.内容代码:右按键时,假如同时压下ALT键,那么内容代码为1。

5.键的先前状态:如果在此之前键是释放的,则键的先前状态为0,否则为1。

6.转换状态:如果键正被按下,则转换状态为0;如果键正被释放,则转换状态为1。

7.位移状态:在处理按键消息时,您可能需要知道是否按下了位移键 (Shift、Ctrl和Alt)或开关键(Caps Lock、Num  Lock和Scroll  Lock)。通过呼叫GetKeyState函数,您就能获得此信息。例如:iState = GetKeyState(VK_SHIFT);

使用按键消息:为SYSMETS加上键盘处理功能:

SYSMETS4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的横打

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

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

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

打赏作者

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

抵扣说明:

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

余额充值