资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第13章,Windows,的基本输入,Windows,的输入有多种,如键盘输入、鼠标输入、扫描仪输入和摄像机输入等。其中最基本和最常用的就是键盘输入和鼠标输入。本章将讲解这两种最基本的输入方式,并详细讲解消息处理机制的理论本质,本章主要修行的要点如下。,键盘和鼠标消息理论基础:了解,Windows,的基本输入,即键盘和鼠标的输入,以及消息传递的基本原理,为进一,步深入理解,Windows,消息内核打下基础。,键盘和鼠标的消息处理函数分析:理解键盘和鼠标消息处理函数的原型和各参数代表的意义,学会自定义消息处理函数。,消息处理实例的创建和使用:学会使用,Visual C+,进行键盘和鼠标消息处理函数的添加、删除和修改,并学会独立编写使用键盘或鼠标操作响应的软件。,13.1 键盘消息及其处理,没有哪个软件在使用过程中不用键盘操作的,或者说不允许键盘操作,除非刻意做出这样奇怪的软件。键盘是计算机的“元老级”计算机配件,早在鼠标出世的,n,年前,键盘已经被各位计算机科学家频繁使用在实验室中。,13.1.1 巧妇难为无米之炊:没有键盘怎么行?,曾有朋友问过我,是鼠标重要还是键盘重要?不能都选,也不能都不选。这着实让我愣了一下,还没等我想出答案,他已经告诉我肯定是键盘重要,原因是,有键盘就能安装,Windows,操作系统,而单有鼠标的话就不能。虽然是一个笑话,不过也反映了键盘的历史比鼠标久远得多,在以前只有大型计算机的时代,别说纸带机之类“远古时代”了,就以前基本只有,Fortran,语言进行数学计算也是只用键盘就可以了,操作人员也没有想过以后会有鼠标,更没有奢望过有多媒体、3,D,网络游戏等。,计算机的很多古老配件在今天已经看不到了,如软盘、磁带盘等,它们消亡的原因在于有更好的替代品,如,VCD、DVD,或大容量,U,盘、移动硬盘等。键盘作为一种基本的输入设备,也出现过一些替代品,如鼠标,但鼠标主要用于定位和选取,打字功能也很弱,后来人们也发明了一种“手写板”,目的在于方便不会打字的人使用,但“手写板”非但没有流行起来,相反,原来不会打字用手写板的人全部都变成使用键盘的打字高手了,因为要使用“手写板”效率太低了,还不如先学会打字,结果“手写板”作为新产品反而遭到,PC,配件市场的淘汰,只有在购书中心等地方用于客户查询时才使用。,综合上面所述,很难想象没有键盘的日子是怎么过的,当然,这不用担心,这个事情不会发生,至少在能遇见的将来,我们还是可以使用键盘,直到出现的确比键盘更方便快捷的输入工具,而非攀比新技术。,13.1.2 键盘消息处理函数,在前文中,我们多次使用到了消息函数。在,MFC,中,添加一个键盘消息函数,则应该,修改3个地方。,(1)消息函数的声明:在头文件(*.,h),的类定义体中。,(2)消息映射表注册:在源文件(*.,cpp,),的消息映射表中。,(3)消息函数的实现:在源文件(*.,cpp,),的类实现中。,键盘消息函数一般有两种。,OnKeyDown,():,键盘按键按下时的消息处理函数。,OnKeyUp,():,键盘按键按下后,弹起时的消息处理函数。,当然,从函数名也可以知道这两个函数分别用于处理键盘按钮按下和键盘按钮弹起时的消息。以,OnKeyDown,(),函数为例,做出以下对键盘消息处理函数的分析,函数原型如下:,afx,_,msg,void,OnKeyDown,(UINT,nChar,UINT,nRepCnt,UINT,nFlags,);/,消息处理函数声明,13.1.3 实例键盘消息处理,【本节示例参考:源代码,C13,KeyBoard,】,键盘消息处理实例编写相对比较简单,本节的实例将创建,MFC,应用程序,并在该程序上开发键盘消息的功能,使用户在按下键盘按键时,程序做出相应的信息提示,如用户按下“,F1”,键,应用程序将提示“按下,F1,键!”的提示信息,具体步骤如下:,13.2 鼠标消息及其处理,前文将键盘和鼠标进行了重要性的比较,虽然说两者择其一来看,键盘相对比较重要,但如果没有鼠标,很难想象现在的计算机或互联网能普及。本节将讲解鼠标消息函数的添加和使用。,13.2.1 没有鼠标将永远,DOS,设想一下,没有鼠标会怎么样?,(1)光标移动非常困难,使用方向键浪费了工作人员95的时间和精力,而这些时间和精力仅仅就是为了将光标移动到自己需要按下“,Enter”,键的地方。,(2)没有鼠标,或许永远只能这样:输入确定再输入再确定。这个或许是很多,DOS,老手感到亲切,也同时是这些,DOS,老手感到有点“心有余悸”的操作方式,毕竟使用,Windows,那么久了,再一夜回到解放前,大家都不希望这样。,(3)如果没有鼠标,恐怕最大意见的就是现在的计算机游戏玩家了,如果读者就是一个游戏玩家,把你的鼠标拿走,你还能玩什么游戏呢?,可见,没有鼠标的计算机操作、工作和娱乐都是非常不方便的,开发,Windows,系统的目的就在于“所见即所得”,需要到哪个窗口就自由移动光标并选取该窗口。,不管是工作还是娱乐,鼠标的目的是为了方便计算机使用者的操作而存在的,在不远的将来,不排除会有3,D,触觉控制器的出现,而计算机控制也正在往那个方向发展,到目前为止,鼠标仍然是最方便并且最廉价的选择。,13.2.2 鼠标消息处理函数的种类,用户在使用,Windows,系统及其应用软件时,鼠标是一个必不可少的操作工具,鼠标主要的动作有如下几点。,鼠标双击:使用鼠标的左键进行连续的双击,常用于打开某文件、文件夹或代替鼠标左键的某项功能。,鼠标单击:一般是指鼠标左键单击某对象、文件、文件夹、菜单或选项等。,鼠标右击:一般是指鼠标右键单击某对象、文件、文件夹、菜单或选项等。,鼠标移动:指用户通过移动鼠标来使窗口中的鼠标光标移动。,鼠标滚轮滑动:通过滚轮滑动,来快速滚动屏幕,常用于网页浏览或多文件的文件夹浏览等。,13.2.3 实例鼠标消息处理,【本节示例参考:源代码,C13mouseMsg】,本节将讲解一个简单的鼠标消息处理,使用鼠标右键来画一个方框,使用鼠标左键来画一个圆形,即当用户在视图界面单击鼠标右键时,将以该鼠标单击的位置为中心,画一个矩形方框,反之,当用户在视图界面单击鼠标左键时,将以该鼠标单击的位置为中心,画一个圆形,实例开发的具体步骤如下:,13.3 小结,本章是,Windows,应用程序设计的重要部分,没有了鼠标和键盘的消息处理,将不可能进行,Windows,应用程序的设计,因此,处于本章知识的重要性考虑,本章实例的编写比较简单且经常使用,读者务必将本章两个实例亲自编写完成,并发挥自己的想象添加更丰富的功能。通过本章的学习,读者应该掌握的内容如下:,理解键盘和鼠标消息处理函数的原型和各参数代表的意义,了解常用的键盘码,了解常用的鼠标消息的类型。,掌握使用,Visual C+,进行键盘和鼠标消息处理函数的添加,掌握手工删除和修改键盘和鼠标消息处理函数,掌握简单的鼠标和键盘消息处理函数的应用程序设计。,本章习题,一、填空题,1,Windows,的基本输入有:_和_。,2,使用,ClassWizard,鼠标和键盘的消息处理函数,必须修改3项源码项:_,_和_。,3,鼠标左键双击的消息是_。,二、选择题,1,下列哪个消息不属于鼠标消息()?,AWM_LBUTTONDBLCLK;,BWM_RBUTTONDBLCLK;,CWM_RBUTTONUP;,DVK_UP。,2,属于键盘按下的消息处理函数是()。,A,OnKeyDown,(),B,OnKeyUp,(),C,OnRButtonDown,(),D,OnLButtonDown,(),
展开阅读全文