欢迎来到天天文库
浏览记录
ID:61836734
大小:112.00 KB
页数:10页
时间:2020-02-07
《第7章 Windows的基本输入.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章Windows的基本输入操作系统提供了两种接口来接收用户输入,一种是应用程序接口,即API;该接口主要提供给程序员使用。另一种是用户输入消息,主要是键盘消息和鼠标消息。本章将讲解VC中读取键盘和鼠标的消息,通过实例来分析消息处理函数的运行机制。本章涉及的知识点有:键盘和鼠标消息理论基础:了解Windows基本输入(键盘和鼠标的输入)的消息传递基本原理,为进一步深入理解Windows消息内核打下基础。键盘和鼠标的消息处理函数分析:理解键盘和鼠标的消息处理函数的原型和各参数代表的意义,学会自定义消息处理函数。消息处理实例的创建和
2、使用:学会使用VC进行键盘和鼠标的消息处理函数的添加、删除和修改,并学会独立编写使用键盘或鼠标操作响应的软件。7.1键盘消息及其处理本节首先介绍键盘消息的基本概念,了解基本概念后,再实现进行键盘消息的接收、处理的实例,最后对消息处理函数进行分析以加深理解。7.1.1键盘消息的处理键盘是用户使用计算机不可缺少的一个输入工具。MFC程序架构中,键盘输入的接收实际上是分为两步走,第一步是Windows给窗口发送WM_KEYDOWN和WM_KEYUP消息时用的虚拟键盘码。如果按下一个键盘按钮,则引发一个WM_KEYDOWN消息,并发送给应
3、用程序,而相应地,键盘按钮弹起时,则引发一个WM_KEYUP消息。第二步是将消息打包送到窗口中进行处理。当然这只是简化的消息过程,实际上Windows还要判断Shift键或CapsLock等组合键情况。在掌握键盘消息编程之前,先理解以下的概念,这对以后的Win32SDK或其他类库基础上进行技术研发是有较大作用的。7.1.2键盘消息处理函数【本节示例参考7.1.3小节】MFC中,添加一个键盘消息函数,则应该修改3个必要项:(1)消息函数的声明。(2)消息映射表注册。(3)消息函数的实现。键盘消息函数一般有两种:OnKeyDown()
4、和OnKeyUp(),分别用于处理键盘按钮按下和键盘按钮弹起时的消息。以OnKeyDown()函数为例,以下做出对键盘消息处理函数的分析:函数原型:afx_msgvoidOnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags);函数返回值是void,afx_msg是MFC消息函数的标记。形式参数有3个:nChar:用户的键盘码。如7.1.3节的例子的VK_UP,它的定义是:#defineVK_UP0x26;7.1.3实例7.1-键盘消息处理实例7.1就是创建一个可以接收键盘信息的MFC单文档应用程序。
5、步骤如下:(1)单击“File”菜单,选中“New”命令。(2)设置向导。在向导中,将项目名称命名为“KeyBoard_Ex”。并将应用程序类型设置为“单文档”,其他选项默认。(3)找到类视图中进行添加消息函数。在工作区左边的代码视图窗口中,单击“类视图”,然后单击“CKeyBoard_ExView”类,这时属性框会相应出现该类的属性列表。键盘按钮消息反应7.2鼠标消息及其处理本节首先介绍鼠标消息的基本概念,了解基本概念后,再实现进行鼠标消息的接收、处理的实例。7.2.1鼠标消息的处理用户在使用Windows系统及其应用软件时,鼠
6、标是一个必不可少的操作工具,鼠标主要的动作有:鼠标双击:使用鼠标的左键进行连续的双击,常用于打开某文件、文件夹或代替鼠标左键的某项功能。鼠标单击:一般是指鼠标左键单击某对象、文件、文件夹、菜单或选项等。鼠标右击:一般是指鼠标右键单击某对象、文件、文件夹、菜单或选项等。鼠标移动:指用户通过移动鼠标来使窗口中的鼠标光标移动。鼠标滚轮滑动:通过滚轮滑动,来快速滚动屏幕,常用于网页浏览或多文件的文件夹浏览等。7.2.2鼠标消息处理函数【本节示例参考7.2.3小节】在MFC中,添加一个鼠标消息函数,与添加键盘消息类似,也应该修改3个必要项:
7、(1)消息函数的声明。(2)消息映射表注册。(3)消息函数的实现。其实在前文已经多次使用到消息处理函数,都跟这三项有关。鼠标消息函数与键盘消息函数不同的是:键盘消息:要识别不同的键盘码,不同的键盘码使用的都是同一个消息,只是按键不同。因此,键盘消息处理函数常使用switch语句对不同的按键动作进行处理。鼠标消息:不用识别不同的按键码,因此不同的按键,如鼠标左键、鼠标右键和鼠标滑轮都分别使用了不同的消息。因此,鼠标消息不必如键盘消息那样使用switch语句,而不同的鼠标消息处理函数的共同点在于传递一个CPoint类型的当前光标的位置
8、值,以方便处理鼠标所在的位置。7.2.3实例7.2-鼠标消息处理(五子棋游戏)实例7.2讲解鼠标消息处理,相信大多数读者都玩过“五子棋”,本节通过开发“五子棋”游戏的框架来对鼠标消息的使用进行讲解。“五子棋”游戏主要模块如下:棋盘:棋盘模块相对简单
此文档下载收益归作者所有