windows 键盘消息的机制

论坛 期权论坛     
选择匿名的用户   2021-6-1 18:40   238   0
<div id="tab1">
在Microsoft Windows 98中,键盘和鼠标是两个标准的使用者输入来源,在一些连贯操作中常产生互补作用。当然,鼠标在今天的应用程序中比十年前使用得更为广泛。甚至在一些应用程序中,我们更习惯于使用鼠标,例如在游戏、画图程序、音乐程序以及Web浏览器等程序中就是这样。然而,我们可以不使用鼠标,但绝对不能从一般的PC中把键盘拆掉。
<p>相对于个人计算机的其它组件,键盘有非常久远的历史,它起源于1874年的第一台Remington打字机。早期的计算机程序员用键盘在Hollerith卡片上打孔,后来在终端机上用键盘直接与大型主机沟通。PC上的键盘在某些方面进行了扩充,加上了功能键、光标移动键和单独的数字键盘,但它们的输入原理基本相同。</p>
<p><a name="206001"></a><strong>键盘基础</strong><br> </p>
<p>您大概已经猜到Windows程序是如何获得键盘输入的:键盘输入以消息的形式传递给程序的窗口消息处理程序。实际上,第一次学习消息时,键盘事件就是一个消息如何将不同型态信息传递给应用程序的显例。</p>
<p>Windows用八种不同的消息来传递不同的键盘事件。这好像太多了,但是(就像我们所看到的一样)程序可以忽略其中至少一半的消息而不会有任何问题。并且,在大多数情况下,这些消息中包含的键盘信息会多于程序所需要的。处理键盘的部分工作就是识别出哪些消息是重要的,哪些是不重要的。</p>
<p><strong>忽略键盘</strong><br> </p>
<p>虽然键盘是Windows程序中使用者输入的主要来源,但是程序不必对它接收的所有消息都作出响应。Windows本身也能处理许多键盘功能。</p>
<p>例如,您可以忽略那些属于系统功能的按键,它们通常用到Alt键。程序不必监视这些按键,因为Windows会将按键的作用通知程序(当然,如果程序想这么做,它也能监视这些按键)。虽然呼叫程序菜单的按键将通过窗口的窗口消息处理程序,但通常内定的处理方式是将按键传递给DefWindowProc。最终,窗口消息处理程序将获得一个消息,表示一个菜单项被选择了。通常,这是所有窗口消息处理程序需要知道的(在<a href="">第十章</a>将介绍菜单)。</p>
<p>有些Windows程序使用「键盘快捷键」来启动通用菜单项。快捷键通常是功能键或字母同Ctrl键的组合(例如,Ctrl-S用于保存文件)。这些键盘快捷键与程序菜单一起在程序的资源描述文件中定义(我们可以在<a href="">第十章</a>看到)。Windows将这些键盘快捷键转换为菜单命令消息,您不必自己去进行转换。</p>
<p>对话框也有键盘接口,但是当对话框处于活动状态时,应用程序通常不必监视键盘。键盘接口由Windows处理,Windows把关于按键作用的消息发送给程序。对话框可以包含用于输入文字的编辑控件。它们一般是小方框,使用者可以在框中键入字符串。Windows处理所有编辑控件逻辑,并在输入完毕后,将编辑控件的最终内容传送给程序。关于对话框的详细信息,请参见<a href="">第十一章</a>。</p>
<p>编辑控件不必局限于单独一行,而且也不限于只在对话框中。一个在程序主窗口内的多行编辑控件就能够作为一个简单的文字编辑器了(参见<a href="">第九</a>、<a href="">十</a>、<a href="">十一</a>和<a href="">十三章</a>的POPPAD程序)。Windows甚至有一个Rich Text文字编辑控件,允许您编辑和显示格式化的文字(请参见/Platform SDK/User Interface Services/Controls/Rich Edit Controls)。</p>
<p>您将会发现,在开发Windows程序时,可以使用处理键盘和鼠标输入的子窗口控件来将较高层的信息传递回父窗口。只要这样的控件用得够多,您就不会因处理键盘消息而烦恼了。</p>
<p><strong>谁获得了焦点</strong><br> </p>
<p>与所有的个人计算机硬件一样,键盘必须由在Windows下执行的所有应用程序共享。有些应用程序可能有多个窗口,键盘必须由该应用程序内的所有窗口共享。</p>
<p>回想一下,程序用来从消息队列中检索消息的MSG结构包括hwnd字段。此字段指出接收消息的窗口控件码。消息循环中的DispatchMessage函数向窗口消息处理程序发送该消息,此窗口消息处理程序与需要消息的窗口相联系。在按下键盘上的键时,只有一个窗口消息处理程序接收键盘消息,并且此消息包括接收消息的窗口控件码。</p>
<p>接收特定键盘事件的窗口具有输入焦点。输入焦点的概念与活动窗口的概
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP