- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六节 鼠标和键盘事件
应用背景
Windows系统是多任务操作系统,每个任务都有自己的消息,这些消息构成消息队列,由操作系统统一管理。如果一个程序发生某个事件,则系统就按一定顺序把该消息传递给该任务,该任务然后去执行一段程序。每个消息隶属于某个运行的程序,程序是按照消息的顺序来执行的,因此说Windows程序是消息(事件)驱动执行的。
Windows的消息有很多种,在VB中最基本的事件包括:鼠标事件,键盘事件,对象加载和卸载事件,当然对于一些特殊控件,还包括一些其它的特殊事件,例如:窗体的resize事件,Timer控件的Timer事件,文本框Text的Change事件等等。Windows的程序运行都是在这些事件的驱动下来完成的,如果没有事件,程序就处于等待状态。
Windows程序的消息驱动基本原理图如图6-1,Windows操作系统按照事件顺序发送消息给每个运行程序后,程序按照给定的消息执行相关的任务:
图6-1消息驱动示意图
知识要点
(1)鼠标点击事件Click()
当单击鼠标键时,依次触发MouseMove事件,MouseDown事件,MouseUp事件,Click事件。
当双击鼠标键时,依次触发MouseDown事件,MouseUp事件,Click事件,DbClick事件,MouseUp事件。
在编写程序时,只需要编写你需要的事件代码,没有编程的空事件过程,系统不作处理。例如,编写命令按钮Command的Click事件,命令按钮的其他事件系统则不做处理。
(2)鼠标双击事件DblClick()
鼠标双击事件,是指连续2次点击鼠标发生的事件。下面为窗体的双击事件,打印出“双击窗体!”的字符串,单击事件,打印出“单击窗体!”。运行后可以看出,首先发生Click事件,然后发生DbClick事件。
Private Sub Form_Click()
Print 单击窗体!
End Sub
Private Sub Form_DblClick()
Print 双击窗体!
End Sub
(3)控件的鼠标移动事件:MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
发生条件:鼠标在控件上移动发生该事件。
X,Y:鼠标在控件坐标系的位置坐标,X为横向坐标,Y为纵坐标。
Button:为鼠标的按键,为整形参数,该值转换为二进制数后,最低3位由低到高分别代表鼠标的按键L,R,M三个键。下表列出Button的参数与鼠标按键的对应关系。
二进制(MRL) 十进制 按键 001 1 左键 010 2 右键 100 4 中间键 101 5 中间键和左键 Shift:为键盘的控制键,转换为二进制后,最低3位由低到高分别代表Shift,Ctrl,Alt三键的按下和释放状态。下表列出Shift的参数与键盘控制按键的对应关系。
二进制(ACS) 十进制 按键 001 1 Shift键 010 2 Ctrl键 100 4 Alt键 101 5 Alt键和Shift键 (4)控件的鼠标按下事件:MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
发生条件:鼠标在控件上按下发生该事件。
事件参数与MouseMove事件参数相同。
(5)控件的鼠标抬起事件:MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
发生条件:鼠标在控件上移动发生该事件。
事件参数与MouseMove事件参数相同。
(6)控件的键盘事件KeyPress(KeyAscii As Integer)
控件的键盘事件是在用户敲击键盘时产生的事件,这个键盘消息一般属于获得焦点的控件,不能获得焦点的控件不具备KeyPress事件。常用来判断按下的字符,是否符合一定的条件。
按下键盘,发生的时间顺序为KeyDown事件,KeyPress事件,KeyUp事件。
发生条件:控件获得焦点,按下键盘后发生。
KeyAscii:整数,按键的Ascii码值。
(7)控件的键盘事件KeyDown(KeyCode As Integer, Shift As Integer)
发生条件:控件获得焦点,按下键盘后发生。
KeyCode:整数,按键的扫描码,与键盘上的键一一对应,与Ascii码不同,小写a和大写A返回相同的扫描码。
Shift:整数,指示按下的Shift,Ctrl,Alt键的状态。在这个事件中只有检查这个参数,才知道输入的大小写字母,具体含义同鼠标事件。
(8)控件的键盘事件KeyUp(KeyCode As
文档评论(0)