windows基础应用程序编程(六)键盘消息

本文深入探讨Windows基础应用程序编程中的键盘消息处理,详细解释lParam参数在击键消息中的信息结构,并给出字符消息的实际应用示例。
摘要由CSDN通过智能技术生成

简介

在windows系统中,键盘和鼠标是两个很重要的外设装置,如果我们需要让我们的应用程序对鼠标和键盘来进行响应。那么我就就需要相应对应的鼠标和键盘消息,接下来,我么首先了解一下关于键盘消息的内容。
在了解键盘消息之前,我们需要首先了解一下关于焦点的知识,我们知道,键盘只有一个,而我们的计算机可以同时运行多个程序,也就是说,在Windows下运行的所有应用程序共享我们的键盘。那么当我们敲下键盘时,由哪些程序来响应我们的键盘消息呢?(或者,在一个应用程序有多个窗口的情况下,是哪一个窗口来响应我们的消息呢?)这就涉及到了焦点的问题。
经过前面的介绍,我们知道了,在消息的结构体中包含了hwnd字段,表示要接受消息的窗口句柄。然后由消息循环中的DispatchMessage函数向窗口过程发送消息。也就是说,当我们按下一个键时,就会产生一个键盘消息,这个键盘消息中的hwnd字段就指出了要接受消息的窗口句柄。
接受特定键盘事件的窗口具有输入焦点,通常具有输入焦点的窗口即为活动窗口。或者活动窗口的子窗口等。窗口过程通过捕获WM_SETFOCUS和WM_KILLFOCUS消息来判定它的窗口何时拥有输入焦点。WM_SETFOCUS指示窗口正在得到输入焦点,WM_KILLFOCUS表示窗口正在失去输入焦点。
windows接受的键盘消息总体来讲可分为两类:击键消息和字符消息。这与我们实际应用是相同的,在键盘上,我们知道有些用于显示字符的按键(如,A,1,等),有些是用于控制的按键。(如ctrl、shift等),那么如果我们敲击一个用于显示字符的按键,那么windows将会产生击键消息和字符消息两种消息。如果敲击一个非显示字符的按键,则Windows将只会产生一个击键消息。

击键消息

当按下一个键时,Windows将把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入有输入焦点的窗口的消息队列;当释放一个键时,Windows将把WM_KEYUP或者WM_SYSKEYUP消息放入消息队列中。其中WM_SYSKEYDOWN和WM_SYSKEYUP消息通常由Alt加上相应的组合键产生。这些键用于激活程序菜单或者系统菜单上的选项等。一般在我们的应用程序中,通常忽略WM_SYSKEYDOWN和WM_SYSKEYUP消息。而由DefWindowProc函数进行处理。WM_KEYDOWN和WM_KEYUP消息通常是在按下或者释放不带Alt键的键时产生的。对这四类键盘消息,其中的wParam参数表示虚拟键代码,代表着按下或释放的键,而lParam包含着一些其他信息。所谓的虚拟键可以简单的理解成Windows开发者为了屏蔽与硬件相关方式来处理键盘的产物。所有的虚拟键码都定义为以VK_开头。比如VK_BACK表示Backspace键,VK_TAB表示Tab键等。键盘上每个键都对应着虚拟键码,如果需要的话,可以通过MSDN查找。

上面提到过,在击键消息中,lParam消息包含这一些其他信息,那么具体是什么信息呢?我们知道lParam参数是一个32位的数值。这个32位的数值被分为6个域,具体如下:

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值