第八讲 键盘和鼠标事件
- 格式:ppt
- 大小:342.00 KB
- 文档页数:49
键盘与鼠标消息主要内容⏹键盘消息⏹虚拟码⏹字符消息⏹鼠标消息⏹程序举例键盘消息的产生⏹键盘作为输入设备,是Windows应用程序的一个重要的输入手段,当用户按下或释放一个键时,键盘驱动程序Keyboard.drv中的中断处理程序对所击键进行编码并调用Windows用户模块USER.EXE的有关程序来生成键盘消息,并最终发送到应用程序的消息队列中等待处理,而处理这些消息则是由应用程序的窗口过程来具体完成。
⏹键盘上每一个有意义的键都对应着一个惟一的助记符,称为扫描码。
当用户在按下或释放一个键时,都会产生扫描码。
虽然扫描码可以用来作为键的标识,但它是依赖于具体的设备的,因此在应用程序中,使用的往往是与具体设备无关的虚拟码(虚拟码是与设备无关的标识码)。
键盘消息的产生和处理过程常用的虚拟码按键消息和字符消息鼠标消息⏹Windows是事件驱动、基于消息传递的操作系统。
当用户移动、按下或释放鼠标键时,都会产生鼠标消息,根据鼠标所处的位置不同,Windows下的鼠标消息也分为两大类:客户区域的鼠标消息及非客户区域的鼠标消息。
⏹Windows操作系统通过鼠标设备驱动程序接收鼠标输入。
鼠标驱动程序在启动Windows时装入,Windows操作系统通过鼠标驱动程序能检测出鼠标是否存在。
如果鼠标已经存在,则设备驱动程序将注意到Windows的任何鼠标事件。
每当在窗口内有鼠标事件发生时,窗口就接收到一个鼠标事件(以消息的形式发送给应用程序的窗口)。
注意,与键盘消息不同,只要或者在某个窗口中按下鼠标键,那么窗口过程就会收到鼠标消息,即能接收鼠标事件的窗口并不一定要求是活动窗口或者是具有输人焦点的窗口。
键盘与鼠标事件过程(上机指导)教学要求:掌握键盘事件KeyPress、KeyDown、KeyUp的基本方法;掌握鼠标事件MouseDown、MouseUp、MouseMove的基本方法;能利用键盘事件、鼠标事件进行程序设计。
知识点:各键盘事件的使用方法;各鼠标事件的使用方法。
内容导航:一、键盘事件(一)KeyPress事件该事件在单击键盘时发生。
它可获得按键的KeyAscii码,并不是单击任意一个键都会发生KeyPress事件,该事件只对会产生ASCII码的键有反应。
在窗体上画一个控件(指上面所讲的可以发生KeyPress事件的控件),双击该控件,进入程序代码窗口后,从“过程”框中选取KeyPress,即可以定义KeyPress事件过程。
一般格式为:Private Sub Command1_KeyPress(KeyAscii As Integer)… …End Sub(二)KeyDown事件和KeyUp事件当用户按下键盘上的任意一个键,便触发该对象的KeyDown事件,释放按键则触发KeyUp 事件。
由于按下键盘的键往往会立即放开,所以这两个事件的使用差别并不大。
KeyDown事件和KeyUp事件的参数有两种形式,其中Index As Integer只用于控件组,而KeyCode As Integer, Shift As Integer用于单个控件。
二、鼠标事件鼠标事件是由用户操作鼠标而引发的事件。
(一)Click事件用户单击鼠标键时发生,格式如下:Private Sub控件名_Click ( [ index As Integer ] )其中Index用于当控件是控件数组时传递的参数。
(二)DbClick事件用户双击鼠标键时发生,格式如下:Private Sub控件名_DbClick ( [ index As Integer ] )(三)MouseDown事件用户按下鼠标上的任一按钮时,就会引发该事件。
第八章键盘与鼠标操作 (2w)程序在运行过程中,经常需要知道用户对键盘和鼠标的具体操作,例如用户按下键盘上的“A”键时是想输入字符“A”还是输入“a”呢,当用户利用鼠标选中“删除”时是想彻底删除还是想放入回收站呢等等,以便于根据不同的情况,执行不同的具体操作。
为此Visual Basic专门定义了和键盘与鼠标有关的事件和方法。
8-1键盘操作当我们敲击一下键盘上的某个按键时,将会先后触发对应对象的KeyDown、KeyPress、(对于文本框之类的对象还会触发Change)、KeyUp等一系列事件。
根据不同的具体应用,我们可以选择不同的事件进行编程。
需要说明的是,对键盘的某个按键进行操作时,触发的是目前具有输入焦点(Focus)对象的事件。
一般情况下窗体对象不响应这些事件,除非满足下面几个条件:1.目前窗体上没有添加任何对象,则窗体接收键盘事件。
2.目前窗体上有对象,但是它们属于下面两种情况:1)这类对象不具有接收焦点的能力,例如:标签、框架、形状(Shape)、Timer、Image等等2)这类对象本来可以接收焦点(例如:文本框),但目前处于Disabled状态。
3.窗体的KeyPreview属性为True。
所谓KeyPreview的属性为True,就是说无论在窗体内的什么控件内利用键盘输入,都需要事先经过窗体进行检查。
其中,前两种情况下只触发窗体的KeyDown、KeyPress、KeyUp事件,第三种情况下将先后触发窗体的KeyDown、控件的KeyDown、窗体的KeyPress、控件的KeyPress、窗体的KeyUp、控件的KeyUp事件。
8-1-1 KeyPress事件KeyPress事件过程的的形式有两种:Private Sub 对象名_KeyPress(KeyAscii As Integer) '用于非控件数组Private Sub 对象名_KeyPress(Index As Integer, KeyAscii As Integer) '用于控件数组其中:KeyAscii的值在本过程中由系统自动提供,就是用户输入字符的ASCII值。