第10章 VB键盘与鼠标事件过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于某个对象来说,当发生某个键盘事件时, 只要通过传送KeyCode和Shift参数调用键盘处理程 序就可以了。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Const Alt = 4 Const Key_F2 = &H71 ShiftDown% = (Shift And Shift) > 0 AltDown% = (Shift And Alt) > 0 F2Down% = (KeyCode = Key_F2) If AltDown% And F2Down% Then Text1.Text = "AAAAAA" End If End Sub
KeyAscii &H41 &H61 &H42 &H62 &H35 &H25 &H31 &H31
利用逻辑符And可以判断是否按下了某个转换键。 3个符号常量: Const Shift=1 Const Ctrl=2 Const Alt=4 如果 Shift And Shift>0 如果 Shift And Ctrl>0 如果 Shift And Alt>0 则按下了Shift键 则按下了Ctrl键 则按下了Alt键
3.方法 3.方法
按下鼠标键,不要松开,然后移动鼠标,对 象将随鼠标的移动而在屏幕上拖动,松开鼠标键 后,对象即被放下 。 拖放有关的方法有Move和Drag。 Drag方法的格式为:
控件.Drag 控件.Drag
整数
注意: 注意: 不管控件的DragMode属性如何设置,都可以用 Drag方法来人工地启动或停止一个拖放过程。“整 数”的取值为0、1或2,其含义分别为取消拖放、允 许拖放或结束拖放。
“对象”可以是窗体或控件, “事件”可以是MouseDown、MouseUp或MouseMove 鼠标位置由参数x、y确定。
二、鼠标键
鼠标键状态由参数Button来设定,该参数是 一个整数(16位),在设置键状态时实际上只使用 了低3位。 当按下某个键时,相应的位被置1,否则为0。 说明: 说明: ⑴MouseDown、MouseUp事件,只能用鼠标的按 键参数判断是否按下或松开某一个键,不能检 查两个键同时按下或松开。 ⑵MouseMove事件可以通过Button参数判断按下 一个或同时按下两个、三个键。 ⑶在判断是否按下多个键时,要注意避免二义性。 ⑷为提高可读性,可把3个键定义为符号常量。
1.KeyCode
按键的实际的ASCII码。该码以“键”为准,而 不是以“字符”为准。
说明: 说明: 大小写字母用同一个键,它们的KeyCode 相同(使用大写字母的ASCII码),但大键盘上的 数字键与数字键盘上相同的数字键的KeyCode 是不一样的。对于有上档字符和下档字符的键, 其KeyCode为下档字符的ASCII码。 2.Shift
2.在属性窗口中设置MousePointer属性 2.在属性窗口中设置MousePointer属性 在属性窗口中设置MousePointer
单击属性窗口中的MousePointer属性条,然后 单击设置框右端向下的箭头,将下拉显示Mouse Pointer的15个属性值。
3.自定义鼠标光标 3.自定义鼠标光标
第十章
第一节 第二节 第三节 第四节 第五节
键盘与鼠标事件过程
KeyPress事件 KeyPress事件 KeyDown和KeyUp事件 KeyDown和KeyUp事件 鼠标事件 鼠标光标的形状 拖放
KeyPress事件 第一节 KeyPress事件
当压下键盘上的某个键时,将发生KeyPress事件。
一、与拖放有关的属性、事件和方法 与拖放有关的属性、 1.属性 1.属性
(1)DragMode属性:该属性用来设置自动(1)或手 动(0)拖放模式。 (2)DragIcon属性:在拖动一个控件时,这个控件 变成一个图标,等放下后再恢复成原来的控件。
2.事件 2.事件
与拖放有关的事件是DragDrop和DragOver。 把控件(图标)拖到目标对象之后,如果松开鼠 标键,则产生一个DragDrop事件。DragOver事 件用于图标的移动。当拖动对象越过一个控件 时,产生DragOver事件。
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.MousePointer = 11 End Sub
例10.10 编写程序,显示鼠标光标的形状。
二、设置鼠标光标形状 1.在程序代码中设置MousePointer属性 1.在程序代码中设置MousePointer属性 在程序代码中设置MousePointer 格式: 格式: 对象.MousePointer= 对象.MousePointer=设置值 .MousePointer=设置值
“对象”可以是复选框、组合框、命令按钮、目 录列表框、驱动器列表框、文件列表框、窗体、 框架、图像、标签、列表框、图片框、滚动条、 文本框、屏幕等。 “设置值”是0~15的一个值。
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then Beep KeyAscii = 0 End If End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Print Text1.Text End If KeyAscii = 0 ‘避免输入的字符在文本框中回显 End Sub
压下鼠标键时,将触发MouseDown事件; 松开鼠标键时,将触发MouseUp事件; 移动鼠标光标时,将触发MouseMove事件。
一、鼠标位置 格式: 格式: Sub对象 事件(Button 对象_ Sub对象_事件(Button As Integer, Shift As Integer,x As Single,y As Single) End Sub
注意: 注意: 当一个控件或窗体拥有输入焦点时,该控件或 窗体将接收从键盘上输入的信息。
KeyPress事件中的参数Index As Integer 只用于控 件组;KeyAscii As Integer用于单个控件。 利用KeyPress事件可以对输入的值进行限制。 用KeyPress可以捕捉击键动作。 在默认情况下,控件的键盘事件优先于窗体的键 盘事件,因此在发生键盘事件时,总是先激活控 件的键盘事件。
例10.1 编写口令程序。 用文本框的PassWord属性编写过口令程序,下面的 口令程序是用KeyPress事件编写的。
KeyDown和KeyUp事件 第二节 KeyDown和KeyUp事件
当按下键盘上的某个键时,将发生KeyDown 事件;而当松开某个键时,将发生KeyUp事件。 KeyDown和KeyUp事件的参数有两种形式, Index As Integer 只用于控件组; KeyCode As Integer,Shift As Integer用于单个控 件。
如果把MousePointer属性设置为99,则可通 过MouseIcon属性定义自己的鼠标光标。 (1)如果在属性窗口中定义,可首先选择所需要的 对象,再把MousePointer属性设置为“99-Custom”, 然后设置MouseIcon属性,把一个图标文件赋给 该属性(与设置Picture属性的方法相同)。 (2)如果用程序代码设置,则可先把MousePointer 属 性设置为99,然后再用LoadPicture函数把一个图 标文件赋给MouseIcon属性。
例10.8 Shift参数和Button参数测试程序。 例10.9 在图片框中画一个箭头,当在图片框内移动鼠标 时,箭头会随着鼠标光标的移动而改变方向。
第四节 鼠标光标的形状
一、MousePointer 属性
鼠标光标的形状通过MousePointer 属性来设 置。该属性可以在属性窗口中设置,也可以在程 序代码中设置。 MousePointer的属性是一个整数,可以取 0~15的值,当某个对象的MousePointer属性 被设置为某个值时,鼠标光标在该对象内就 以相应的形状显示。
4.鼠标光标形状的使用 4.鼠标光标形状的使用
在Windows中,鼠标光标的应用有一些约定 俗成的规则。为了与Windows环境相适应,在应 用程序中应遵守这些规则。 注: ⑴表示用户当前可用的功能。 ⑵ 表示程序状态的用户可视线索。 ⑶当坐标(X、Y)值为0时,改变鼠标光标形状。
第五节 拖放
按下鼠标键,不要松开,然后移动鼠标,对 象将随鼠标的移动而在屏幕上拖动,松开鼠标键 后,对象即被放下 。
Button参数值 000 (十进制0) 001 (十进制1) 010 (十进制2) 011 (十进制3) 100 (十进制4) 4 101 (十进制5) 110 (十进制6) 111 (十进制7)
作
用
源自文库
未按任何键 左键被按下(默认) 右键被按下 左、右键同时被按下 中间键被按下 同时按下中间和左键 同时按下中间和右键 3个键同时被按下
转换键。它指的是3个转换键的状态,包括 Shift、Ctrl和Alt,这3个键分别以二进制方式表示, 每个键用3位,即Shift键为001,Ctrl键为010,Alt 键为100。
键(字符) KeyCode “A” &H41 “a” &H41 “B” &H42 “b” &H42 “5” &H35 “%” &H35 &H31 “1”(大键盘) &H61 “1”(数字键)
例10.6 用鼠标事件在窗体上画圆。 例10.7 编写程序,在窗体上画圆。要求:按着右键 移动鼠标,则可画圆;否则不能画圆。
三、转换参数(Shift) 转换参数(Shift)
和参数Button一样,转换参数Shift也是一个 整数值,并用其低3位表示Shift、Ctrl 和Alt键的 状态,其中最低位表示按下Shift键(001,十进 制数1),右数第二位表示按下Ctrl 键(010,十进 制数2),第三位表示按下Alt键(100,十进制数4)。 注意: 注意: ⑴某键被按下使得一个二进制位被设置。当按下 某个键时,相应的位被置1,否则为0。 ⑵ Shift参数反映了当按下指定的鼠标键时,键盘 上转换键(Shift、Ctrl和Alt)的当前状态。 ⑶可以把Shift参数和Button参数结合起来进行测试。
上述事件具有相同的参数: 上述事件具有相同的参数:
鼠标按钮的状态( 鼠标按钮的状态(左、中、右等) 右等) 控制键的状态( 控制键的状态(Shift、Ctrl、Alt) 、 、 ) X、Y坐标(不是屏幕的绝对坐标,而是相对 坐标( 、 坐标 不是屏幕的绝对坐标, 控件的坐标) 控件的坐标)
二、自动拖放 1.步骤: 1.步骤: 步骤 ⑴在窗体上画一个控件,例如图片框,并用 DragIcon属性装入一个图标文件 。 ⑵在属性窗口中找到DragMode属性,将其值 设置为“1-Automatic” 。 ⑶在程序代码窗口中的“对象”框中选择 “Form”, 在“过程”框中选择DragDrop,编写Form_ DragDrop事件过程,将源对象移到鼠标光标 (x,y)处 。 例1: :
Shift值 000 (十进制0) 001 (十进制1) 010 (十进制2) 011 (十进制3) 100 (十进制4) 101 (十进制5) 110 (十进制6) 111 (十进制7)
作
用
未按转换键 按下Shift键 按下Ctrl键 同时按下Shift 和 Ctrl 键 按下Alt 键 按下Alt 和 Shift 键 按下Alt 和 Ctrl 键 同时按下Shift、Ctrl、Alt键
例10.2 编写一个程序,当按下键盘上的某个键时, 输出该键的KeyCode码。 例10.3 编写程序,演示KeyDown和 KeyUp的功能。 例10.4 编写程序,当按下转换键和功能键时,输出 相应的信息。 例10.5 编写程序,通过键盘移动滚动条上的滚动框, 并显示移动情况。
第三节 鼠标事件