VB 有关鼠标的操作

合集下载

VB编程中的键盘和鼠标知识总结!

VB编程中的键盘和鼠标知识总结!

VB编程中的键盘和鼠标知识总结!大家好,今天我们来学习VB编程中的键盘与鼠标知识。

读书改变命运,这个理论在当今社会仍然适用。

并且越喜欢读书学习的人,越有更多机会去选择自己想要的生活。

不要惧怕读书的苦,这是你通向美好未来最好的路,共同努力!VB中的键盘与鼠标事件KeyPress事件KeyPress事件简介在窗体上画一个控件(指可以发生KeyPress事件的控件),并双击该控件,进入程序代码窗口后,从'过程'框中选取KeyPress,即可定义KeyPress事件过程。

一般格式为:Private Sub Text1_KeyPress(KeyAscii As Integer)'用户按下并释放一个能产生ASCII码的键时被触发End SubKeyPress事件带有一个参数,这个参数有两种形式:第1种形式是Index As Integer,只用于控件数组;第2种形式是KeyAscii As Integer,用于单个控件。

KeyDown和KeyUp事件KeyDown和KeyUp事件简介KeyDown和KeyUp事件的参数也有两种形式,其中Index As Integer只用于控件数组,而KeyCode As Integer,Shift As Integer用于单个控件。

KeyDown和KeyUp事件都有两个参数,即KeyCode和Shift。

①KeyCode是按键的实际ASCII码。

该码以'键'为准,而不是以'字符'为准。

②Shift转换键。

它指的是3个转换键的状态,包括Shift,Ctrl和Alt键,这3个键分别以二进制数形式表示,每个键有3位,即Shift 键为001,Ctrl键为010,Alt键为100。

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)'用户按下任一个键时被触发End SubPrivate Sub Command1_KeyUp(KeyCode As Integer, Shift As Integer)'用户释放任一个键时被触发End Sub鼠标事件鼠标事件简介为了实现鼠标操作,Visual Basic中提供了以下3个事件过程。

VB中的键盘事件、鼠标事件、拖放技术

VB中的键盘事件、鼠标事件、拖放技术

VB中的键盘事件、鼠标事件、拖放技术键盘事件:参数是KeyAscii,每次按一下键盘上的一个键,相应的键的Ascii码值都要赋给参数KeyAscii,然后再执行相应的操作KeyPreview:接受键盘事件。

默认情况下,窗体的KeyPreview 属性为False,只有窗体获得焦点才能相应键盘事件;若窗体的KeyPreview属性为True,窗体会在空件之前首先截获键盘事件。

Shift And 7: 取Shift参数的低三位,因为7的二进制数是111,shift参数与111进行按位And运算,得到是按了三个功能键中的哪一个。

命令按钮控件的default属性用于设置默认命令按钮.,设置为true时,按[Enter键]相当于用鼠标单击了该按钮,Cancel属性为True,则Esc键触发按钮的Click事件快捷键的优先级高于键盘事件,鼠标事件:参数X和Y表示鼠标指针的位置Clc:清除图像。

划线函数Line格式:Line (x1, y1) -(x2, y2), [color], [B][F](x1, y1) 可选的。

Single (单精度浮点数),直线或矩形的起点坐标。

(x2, y2) 必选的。

Single (单精度浮点数),直线或矩形的终点坐标。

color 可选的。

Long (长整型数),画线时用的 RGB 颜色,可用RGB函数B 可选的。

如果包括,则利用对角坐标画出矩形。

F 可选的。

如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。

不能不用 B 而用F。

例:Line (0, 0)-(X, Y), vbGreen, BF拖放技术:DragMode属性:0—手动拖放,1—自动拖放DragDrop事件:Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)Source.Move X, YEnd Sub---Source表示拖放的控件,即DragMode属性为1的控件;xy 表示鼠标指针的位置坐标。

VB鼠标事件与键盘事件

VB鼠标事件与键盘事件

VB鼠标事件与键盘事件SuB Form—MouseMove(Buttoil As Integer,Shift As Integer,x As Single,Y As Single)这3个鼠标事件过程具有相同的参数,它们把鼠标的信息传给过程。

(1)Button:被按下的鼠标按钮,可以取以下3个值。

(2)Shift:表示Shift、ctrl和Alt的状态。

如表6.7所示。

(3)x,Y:这两个值对应于当前鼠标的位置,采用ScaleMode属性指定的位置。

说明:(1)有些鼠标只有2个按键,或者虽有3个按键,但w:indows鼠标驱动程序不能识别中间按键。

在这种情况下,表6.6中的后4个参数值不能使用。

(2)对于单按鼠标器,它的按键定义为左按键。

如果鼠标带两个按键,并使用windows 的控制面板交换了鼠标器的左、右键,那么,当按右按键时,VB认为是按了左按键。

例如,如果按住Ctrl键,然后在坐标为(2000,3000)的点上按下鼠标器右键,则立即调用Forul—MouseDown过程,释放鼠标右键时,调用Form—MouseUp过程。

此时。

Button、Shift、x、Y这4个参数的值分别为2、2、2000和3000.(3)Shift是转换键,它指的是3个转换状态,包括Shift、ctrl和Alt。

这3个键分别以二进制方式表示,每个键用三位,即:Shift键为001,Ctrl键为010,Alt键为100。

当按下Shift键时,Shift参数的值为00l(十进制数1),当按下ctrl键时,Shift参数的值为010(十进制数2),而按下Alt键时,Shift参数的值为100(十进制数4)。

如果同时按下2个或3个转换键,则Shift参数的值即为上述两者或三者之和。

因此,Shift参数共可取8种值。

Private Sub Form_Load()KeyPreview=TrueEnd SubKeyPreview属性返回或设置一个值,以决定是否在控件的键盘事件之前激活窗体的键盘事件。

VB操作鼠标的自定义类DIYMouse类

VB操作鼠标的自定义类DIYMouse类

VB操作鼠标的自定义类DIYMouse类DIYMouse类一DIYMouse类(使用说明)1、属性CurrentX 指针当前坐标的X值CurrentY指针当前坐标的Y值2、方法PointGoto(x1, y1) 指针移动到屏幕位置LeftClick 单击左键RightClick 单击右键MiddleClick 单击中键DoubleClick 双击左键LeftDown 左键按下LeftUp 左键弹起RightDown 右键按下RightUp 右键弹起MiddleDown 中键按下MiddleUp 中键弹起3、示例Option ExplicitDim M As New DIYMousePrivate Sub Command1_Click()Timer1.Interval = 100Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Timer()Me.Caption = M.CurrentX & "," & M.CurrentY '在标题上显示鼠标当前位置End SubPrivate Sub Command2_Click()M.PointGoto 200, 300 '鼠标移动到屏幕坐标(200,300)位置(单位是像素) M.LeftClick '单击左键M.RightClick '单击右键M.MiddleClick '单击中键M.DoubleClick '双击左键M.LeftDown '按下左键(不松开)M.LeftUp '弹起左键(松开)'……省略,其余功能暂不一一列举End Sub二DIYMouse类(代码)Option Explicit'DIYMouse类'获取鼠标指针在屏幕上的坐标Private Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As Long'设置鼠标指针在屏幕上的坐标Private Declare Function SetCursorPos Lib "user32" (ByV al sPointX As Long, ByV al _sPointY As Long) As Long'鼠标事件Private Declare Sub mouse_event Lib "user32" (ByV al dwFlags As Long, ByV al dx _As Long, ByV al dy As Long, ByV al cButtons As Long, ByV al dwExtraInfo As Long)Private Const MouseEventF_LeftDown = &H2 '左键按下Private Const MouseEventF_LeftUp = &H4 '左键抬起Private Const MouseEventF_MiddleDown = &H20 '中键按下Private Const MouseEventF_MiddleUp = &H40 '中键抬起Private Const MouseEventF_Move = &H1 '鼠标移动Private Const MouseEventF_RightDown = &H8 '右键按下Private Const MOUSEEVENTF_RightUp = &H10 '右键抬起Private Const MouseEventF_ABSOLUTE = &H8000 'dx和dy 指定鼠标坐标系统中的一个绝对位置。

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解鼠标是计算机中常用的输入设备之一,通过鼠标用户可以进行控制、操作等操作。

在使用VB编程时,我们可以通过API函数来实现鼠标的一些特定操作,如设置鼠标的位置、隐藏或显示鼠标指针等。

下面我们就来详细介绍一下VB中鼠标的API函数使用方法。

首先,我们需要在VB的代码窗口中声明API函数,这样我们才能在程序中使用这些函数。

在VB中,我们可以使用Declare语句来声明API函数,如下所示:```Private Declare Function 函数名 Lib "dll文件名" (参数列表)As 返回值类型```其中,函数名是API函数的名称,Lib是API函数所在的dll文件名,参数列表是API函数的参数列表,返回值类型是API函数的返回值类型。

1.设置鼠标的位置鼠标的位置可以通过API函数SetCursorPos来设置,代码如下:```Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As LongSub SetMousePosition(ByVal X As Long, ByVal Y As Long)SetCursorPos X, YEnd Sub```在上述代码中,我们使用Declare语句声明了SetCursorPos函数,该函数位于user32.dll文件中。

然后我们定义了一个名为SetMousePosition的子过程,通过调用SetCursorPos函数来设置鼠标的位置。

2.隐藏或显示鼠标指针我们可以使用API函数ShowCursor来隐藏或显示鼠标指针,代码如下:```Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As LongSub HideCursorShowCursor FalseEnd SubSub ShowCursorShowCursor TrueEnd Sub```在上述代码中,我们使用Declare语句声明了ShowCursor函数,该函数位于user32.dll文件中。

VB程序设计课件第17讲 鼠标、键盘

VB程序设计课件第17讲 鼠标、键盘
注意: 注意:鼠标事件可发生在窗体或控件上 事件: MouseDown 事件:按下某一鼠标键
Sub Form1_MouseDown(Sender As Object, e As ……)…… MouseUp: MouseUp:释放某一鼠标键 MouseMove: MouseMove:移动鼠标
2
对象 e
3
• e.X 和 e.Y :
鼠标的当前位置
例 显示鼠标指针所指位置
4
2. 键盘事件
Form1_KeyPress(Sender As Object, e As ……) e.KeyChar:按键的ASCII码 e.KeyChar:按键的ASCII码 ASCII e.Handled: e.Handled:是否响应本次按键操作 True: True:不响应 例:文本框的输入效应 False: False:响应
6
False: False:响应
区别
KeyPress 事件发生的时间 参数值 按Shift+A时 Shift+A时 事件发生的次数 按Shift+A时参数 Shift+A时参数 键盘大写状态) (键盘大写状态) 按Shift+a时参数 Shift+a时参数 键盘小写状态) (键盘小写状态) 按一ASCII键 按一ASCII键 ASCII e.KeyChar接收到 e.KeyChar接收到 ASCII值 ASCII值 事件发生一次 97 65 KeyDown和 KeyDown和KeyUp 按任意一个键 e.KeyCode接收到 e.KeyCode接收到 键的扫描码 事件发生两次 第一次是16 第一次是16 第二次是65 第二次是65 第一次是16 第一次是16 第二次是65 第二次是65
e.Button 操作左键 操作右键 操作中键 没按键 MouseButtons.Left MouseButtons.Right MouseButtons.Middle MouseButtons.None

VB程序设计键盘与鼠标事件过程

VB程序设计键盘与鼠标事件过程

VB程序设计键盘与鼠标事件过程11.1 键盘事件在Visual Basic中,窗体和接受键盘输入的控件都能识别这三种键盘事件:一是KeyPress,按下对应某ASCII字符的键;二是KeyDown,按下键盘的任意键;三是KeyUp,释放键盘的任意键。

只有获得焦点的对象才能接受键盘事件。

11.1.1 KeyPress事件当按下某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyPress事件,返回“所按字符”的ASCII码。

语法格式:Sub Object_KeyPress(KeyAscii As Integer)或Sub Object_KeyPress([index As Integer,]KeyAscii As Integer) 说明:1、Object:是指窗体或控件对象名;2、index:一个整数,它用来惟一标识一个控件数组中的控件;3、KeyAscii:是指KeyAscii参数返回对应ASCII字符代码的整型数值;KeyPress事件带有一个参数,这个参数有两种形式。

第一种形式为:Index As Integer,这种形式只用于控件数组;第二种形式为:KeyAscii As Integer,这种形式只用于单个控件。

11.1.2 KeyDown事件和KeyUp事件当按下或松开某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyDown事件或者KeyUp事件,返回键盘的直接状态。

KeyDown事件和KeyUp事件的参数也有两种形式:(1)Index As Integer 只用于控件数组。

(2)KeyCode As Integer,Shift As Integer 用于单个控件,本章只讨论这种形式。

语法格式为:Sub Object_KeyDown(KeyCode As Integer,Shift AsInteger)Sub Object_KeyUp(KeyCode As Integer,Shift As Integer)说明:1.KeyCode参数KeyCode表示按下的物理键,以“键”为准,而不是以“字符”为准。

VB教程(第2版) 第9章 鼠标、键盘和OLE

VB教程(第2版) 第9章 鼠标、键盘和OLE

9.1.1 鼠标事件
当在图片框中移动鼠标时,不断地画线和画方块,实现连续画线和方块。 Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '在图片框中移动鼠标 If Button = 1 And C2 = 1 Then Select Case C1 Case 1 Picture1.Line -(X, Y) Case 2 Picture1.Line (X1, Y1)-(X, Y), , BF End Select End If End Sub
9.1.1 鼠标事件
说明: (1)Button表示是哪个鼠标键被按下或释放。用0、1、2三个位表示鼠标 的左、右、中键,每位用0、1表示被按下或释放,三个位的二进制转换成十进 制就是Button的值,如图9.1所示,表9.1列出了按钮与常数值的对应关系。
十进制 0 1 2 3 4 5 6 7
二进制 000 001 010 011 100 101 110 111
图9.4 查看键代码
9.2 键盘事件
2. KeyPress事件 KeyPress事件是当键盘有键按下时触发的。KeyPress事件检测的键有Enter、 Tab、BackSpace以及键盘上的字母、数字和标点符号键,对于其他功能键、编 辑键和定位键,则不作响应。 语法: Private Sub 对象_KeyPress(KeyAscii As Integer) 说明: • 对象:是接受键盘事件的对象,由具有焦点的对象接收。 • KeyAscii:是按键对应的ASCⅡ码值。将keyAscii改为0时可取消本次击键, 这样对象便接收不到按键的字符。

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解1. MouseDown(Button, Shift, X, Y)该函数用于模拟鼠标按下按钮的动作,Button参数可以是常量vbLeftButton、vbRightButton或vbMiddleButton,用于指示要模拟按下的鼠标键;Shift参数可以是常量vbShiftMask、vbCtrlMask或vbAltMask,表示按下Shift、Ctrl、Alt键的状态,如果Shift参数没有指定,则默认为不按下Shift、Ctrl、Alt键;X参数表示鼠标按下点的横坐标,Y参数表示鼠标按下点的纵坐标。

2. MouseUp(Button, Shift, X, Y)该函数用于模拟鼠标抬起按钮的动作,Button参数可以是常量vbLeftButton、vbRightButton或vbMiddleButton,用于指示要模拟抬起的鼠标键;Shift参数可以是常量vbShiftMask、vbCtrlMask或vbAltMask,表示抬起Shift、Ctrl、Alt键的状态,如果Shift参数没有指定,则默认为不抬起Shift、Ctrl、Alt键;X参数表示鼠标抬起点的横坐标,Y参数表示鼠标抬起点的纵坐标。

3. MouseMove(X, Y)该函数用于模拟鼠标移动的动作,X参数表示鼠标移动目标点的横坐标,Y参数表示鼠标移动目标点的纵坐标。

4. MouseWheel(WheelClicks)该函数用于模拟鼠标滚轮操作,WheelClicks参数表示要模拟的滚轮点击数,每次滚轮转动一次,WheelClicks参数的值就会增加或减少一;如果是向前滚动,则WheelClicks参数值应该大于0;如果是向后滚动,则WheelClicks参数值应该小于0。

5. DragPicture(Picture, X1, Y1, X2, Y2, Mode)该函数用于拖拽图形,Picture参数表示拖拽对象。

计算机应用基础VB程序设计第3讲键盘和鼠标操作及菜单设计

计算机应用基础VB程序设计第3讲键盘和鼠标操作及菜单设计

可以捕捉击键动作 例2:编写模拟打字机的过程。

Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Label1.Text = "" End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Label1.Text = Label1.Text & e.KeyChar End Sub

KeyPress、KeyDown、KeyUp 事件
3
键盘操作_续1

KeyPress事件

当用户按下并释放一个某个字符键时触发KeyPress事件 KeyPress事件过程的格式:
Private Sub <对象名>_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyPress … End Sub
10
鼠标操作_续2_举例

例4利用鼠标随手绘图。要求当按鼠标左键拖动时随手画线, 当按右键拖动并释放画圆。程序运行的界面如图所示。

程序
Dim centerx%, centery%, d% „所绘圆的圆心坐标和半径 Dim startx%, starty% „绘制直线时每一个小线段的起始点坐标 Dim mpaint As Graphics „创建Graphics对象 Dim mp As New Pen(Color.Blue, 2) Private Sub Form7_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.Font = New Font("", 14, FontStyle.Bold) mpaint = Me.CreateGraphics „初始化Graphics对象mpaint为窗体 End Sub

VB鼠标的API函数使用详解

VB鼠标的API函数使用详解

1.变换鼠标左右键添加Command1Private Declare Function SwapMouseButton Lib "user32" (ByV al bSwap As Long) As LongPrivate Sub Command1_Click()SwapMouseButton TrueMsgBox "退出前你现在是左撇子"End SubPrivate Sub Form_Unload(Cancel As Integer)SwapMouseButton FalseMsgBox "鼠标左右键已灰复"End Sub2.得知鼠标位置'添加Timer1Option Explicit'*********************** 得知鼠标位置的API ******************************* Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Type POINTAPIX As LongY As LongEnd Type'*************************************************************************Private Sub Form_Load()Timer1.Interval = 10End SubPrivate Sub Timer1_Timer()Dim Point As POINTAPIGetCursorPos PointMe.Caption = Point.X & " " & Point.YEnd Sub3.动画鼠标'添加Picture1Option ExplicitPrivate Const GCL_HCURSOR& = (-12)Private Declare Function SetClassLong& Lib "user32" Alias "SetClassLongA" (ByV al hWnd As Long, ByV al nIndex As Long, ByV al dwNewLong As Long)Private Declare Function LoadCursorFromFile& Lib "user32" Alias "LoadCursorFromFileA"(ByV al lpFileName As String)Private NewCursor1 As LongPrivate OldCursor1 As LongPrivate NewCursor2 As LongPrivate OldCursor2 As LongDim appdisk$, winpath$Private Sub Form_Load()appdisk = Trim(App.Path)If Right(appdisk, 1) <> "\" Then appdisk = appdisk & "\"winpath = Environ("windir") 'windows系统路径NewCursor1 = LoadCursorFromFile(winpath & "\cursors\appstart.ani") 'windows的cursors 自带的.aniOldCursor1 = SetClassLong(Me.hWnd, GCL_HCURSOR, NewCursor1)NewCursor2 = LoadCursorFromFile(appdisk & "dinol.ani")OldCursor2 = SetClassLong(Picture1.hWnd, GCL_HCURSOR, NewCursor2)End SubPrivate Sub Form_Unload(Cancel As Integer)SetClassLong Me.hWnd, GCL_HCURSOR, OldCursor1SetClassLong Picture1.hWnd, GCL_HCURSOR, OldCursor2End Sub4.模拟点击鼠标'添加Command1 Command2 Command3Option Explicit'****************************************************************************** ***Private Declare Function SetCursorPos Lib "user32" (ByV al X As Long, ByV al Y As Long) As LongPrivate Declare Sub mouse_event Lib "user32" (ByV al dwFlags As Long, ByV al dx As Long, ByV al dy As Long, ByV al cButtons As Long, ByV al dwExtraInfo As Long)Const MOUSEEVENTF_LEFTDOWN = &H2Const MOUSEEVENTF_LEFTUP = &H4Const MOUSEEVENTF_RIGHTDOWN = &H8Const MOUSEEVENTF_RIGHTUP = &H10'****************************************************************************** ***Dim x1&, y1&Private Sub Form_Load()Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '窗体置于屏幕中心Command1.Caption = "模拟点左键"Command2.Caption = "模拟点右键"End SubPrivate Sub Command1_Click()x1 = (Me.Left + Command3.Left + Command3.Width / 2) \ 15y1 = (Me.Top + Command3.Top + Command3.Height / 2 + 405) \ 15SetCursorPos x1, y1mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 End SubPrivate Sub Command2_Click()x1 = (Me.Left + Command3.Left + Command3.Width / 2) \ 15y1 = (Me.Top + Command3.Top + Command3.Height / 2 + 405) \ 15SetCursorPos x1, y1mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 End SubPrivate Sub Command3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenMsgBox "您点击了右键"ElseMsgBox "您点击了左键"End IfEnd Sub5.模拟鼠标移动'添加Command1Option Explicit'********************************* 时间延迟的API *************************** Private Declare Sub Sleep Lib "kernel32" (ByV al dwMilliseconds As Long)'********************************* 设置鼠标位置的API *********************** Private Declare Function SetCursorPos Lib "user32" (ByV al X As Long, ByV al Y As Long) As Long'****************************************************************************Dim x1&, y1&, x2&, y2&Private Sub Form_Load()Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '窗体置于屏幕中心'将Command1置于窗体中心Command1.Move (Me.ScaleWidth - Command1.Width) \ 2, (Me.ScaleHeight - Command1.Height) \ 2Command1.Caption = "模拟鼠标移动"x1 = (Me.Left + Command1.Left + Command1.Width / 2 + 60) \ 15y1 = (Me.Top + Command1.Top + Command1.Height / 2 + 405) \ 15SetCursorPos x1, y1 '将鼠标移动到Command1上面End SubPrivate Sub Command1_Click()Randomizex1 = Int(Rnd * (Screen.Width \ 15))y1 = Int(Rnd * (Screen.Height \ 15))x2 = (Me.Left + Command1.Left + Command1.Width / 2 + 60) \ 15y2 = (Me.Top + Command1.Top + Command1.Height / 2 + 405) \ 15DoIf Abs(x1 - x2) >= 4 Thenx1 = IIf(x1 > x2, x1 - 4, x1 + 4)End IfIf Abs(y1 - y2) >= 3 Theny1 = IIf(y1 > y2, y1 - 3, y1 + 3)End IfSetCursorPos x1, y1Sleep 10 '延迟5毫秒If Abs(x1 - x2) <= 4 And Abs(y1 - y2) <= 3 Then Exit DoLoopEnd Sub6.鼠标定位在窗体中间'鼠标定位在窗体中间Private Declare Function SetCursorPos Lib "user32" (ByV al x As Long, ByV al y As Long) As LongPrivate Sub Form_Load()Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2SetCursorPos (Me.Left + (Me.Width \ 2)) \ 15, (Me.Top + (Me.Height \ 2)) \ 15End Sub7.鼠标是否在窗体上'添加Timer1Option Explicit'*****************************************************Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function GetWindowRect Lib "user32" (ByV al hwnd As Long, lpRect As RECT) As LongPrivate Type POINTAPIx As Longy As LongEnd TypePrivate Type RECTLeft As LongTop As LongRight As LongBottom As LongEnd Type'*************************************************Private Sub Form_Load()Timer1.Interval = 10Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Timer()Dim P As POINTAPI, R As RECTGetCursorPos PGetWindowRect Me.hwnd, RIf P.x < R.Left Or P.x > R.Right Or P.y < R.Top Or P.y > R.Bottom ThenMe.Caption = "不在"ElseMe.Caption = "在"End IfEnd Sub8.鼠标限制在窗体内.txt'添加Picture1 Command1 Command2Option Explicit'***************************************************************Private Type RECTleft As Longtop As Longright As Longbottom As LongEnd TypePrivate Declare Function SetCursorPos Lib "user32" (ByV al x As Long, ByV al y As Long) As LongPrivate Declare Function ClipCursor Lib "user32" (lpRect As Any) As LongPrivate Declare Function GetWindowRect Lib "user32" (ByV al hwnd As Long, lpRect As RECT) As LongPrivate Declare Function GetSystemMetrics Lib "user32" (ByV al nIndex As Long) As Long Const SM_CYCAPTION = 4Const SM_CXFRAME = 32Const SM_CYFRAME = 33'******************************************************Dim x1%, y1%Dim r As RECTPrivate Sub Form_Load()Command1.Caption = "将鼠标限制在PictureBox内"Command2.Caption = "将鼠标限制在窗体内"Picture1.AutoRedraw = TruePicture1.Width = 2000Picture1.Print "在图片匡内双击释放鼠标"Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 SetCursorPos (Me.left + Me.Width \ 2) \ 15, (Me.top + Me.Height \ 2) \ 15 End SubPrivate Sub Form_Unload(Cancel As Integer)Call ReleaseEnd Sub' 将鼠标限制在PictureBox内Private Sub Command1_Click()RestrictToControl Picture1 'RestrictToControl在模块程序中有定义CenterOnControl Picture1End Sub'将鼠标限制在窗体内Private Sub Command2_Click()RestrictToForm MeCenterOnForm MeEnd Sub' 双击鼠标左键释放光标Private Sub Picture1_DblClick()Call ReleaseEnd SubPrivate Sub Release()Call ClipCursor(ByV al vbNullString)End SubPrivate Sub RestrictToControl(cntl As Control)On Error Resume NextCall GetWindowRect((cntl.hwnd), r)If Err.Number = 0 Then Call RestrictToRect(r)End SubPrivate Sub CenterOnControl(cntl As Control)On Error Resume NextCall GetWindowRect((cntl.hwnd), r)If Err.Number = 0 Then CenterOnRect rEnd SubPrivate Sub CenterOnForm(frm As Form)Call GetClientScrnRect(frm, r)Call CenterOnRect(r)End SubPrivate Sub RestrictToForm(frm As Form)Call GetClientScrnRect(frm, r)Call RestrictToRect(r)End SubPrivate Sub RestrictToRect(lpRect As RECT)Call ClipCursor(lpRect)End SubPrivate Sub CenterOnRect(lpRect As RECT)Call SetCursorPos(lpRect.left + (lpRect.right - lpRect.left) \ 2, lpRect.top + (lpRect.bottom - lpRect.top) \ 2)End SubPrivate Sub GetClientScrnRect(frm As Form, rC As RECT)Call GetWindowRect((frm.hwnd), rC)x1 = GetSystemMetrics(SM_CXFRAME)y1 = GetSystemMetrics(SM_CYFRAME)rC.left = rC.left + x1rC.right = rC.right - x1rC.top = rC.top + y1 + GetSystemMetrics(SM_CYCAPTION)rC.bottom = rC.bottom - y1End Sub9.隐藏鼠标'添加Command1'True:1 显示鼠标/ 0 False:隐藏鼠标'****************************************************Private Declare Function ShowCursor Lib "user32" (ByV al bShow As Long) As Long'****************************************************************Private Sub Form_Load()Me.KeyPreview = TrueEnd SubPrivate Sub Command1_Click()ShowCursor (0)Me.Caption = "鼠标已隐藏,请按任何键退出" '别管任务栏还看得到,全屏即看不到了. End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode <> 0 Then Unload MeEnd SubPrivate Sub Form_Unload(Cancel As Integer)ShowCursor (1)Set Form1 = NothingEnd Sub10.自创手指图标Option ExplicitPrivate Declare Function SetCursor Lib "user32" (ByV al hCursor As Long) As LongPrivate Sub Form_Unload(Cancel As Integer)SetCursor 65553End SubPrivate Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)SetCursor 65581End Sub。

VB模拟一次鼠标事件

VB模拟一次鼠标事件

VB模拟一次鼠标事件使用API函数mouse_event可以模拟一次鼠标事件,比如左键单击、双击和右键单击等。

这个实例利用此函数产生了十分有趣的效果,无论鼠标处于屏幕的任何位置,每隔一秒程序会使鼠标在那个位置单击或双击一次,这会给我们造成什么样的混乱呢?试一试就知道了。

-------------------------------------------模拟鼠标的左键单击和右键单击-------------------------------------------程序说明:本例采用API函数实现模拟的鼠标事件,程序运行后会产生十分有趣的效果。

也来试一试。

本例中只使用了相对鼠标坐标,我们也可以使用绝对鼠标坐标来试一试。

-------------------------------------------【VB声明】Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)【说明】模拟一次鼠标事件【备注】进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度【参数表】dwFlags -------- Long,下述标志的一个组合MOUSEEVENTF_ABSOLUTEdx和dy指定鼠标坐标系统中的一个绝对位置。

在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 -MOUSEEVENTF_MOVE 移动鼠标MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下MOUSEEVENTF_RIGHTUP 模拟鼠标右键抬起MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下MOUSEEVENTF_MIDDLEUP 模拟鼠标中键抬起dx ------------- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动dy ------------- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动cButtons ------- Long,未使用dwExtraInfo ---- Long,通常未用的一个值。

vb中键盘鼠标事件

vb中键盘鼠标事件

第12章键盘与鼠标事件过程Visual Basic应用程序能够响应多种键盘事件和鼠标事件。

例如,窗体、图片框与图像控件都能检测鼠标指针的位置,并可判定其左、右键是否已经按下,还能响应鼠标按钮与Shift、Ctrl或Alt键的各种组合。

利用键盘事件可以编程响应多种键盘操作,也可以解释、处理ASCII字符。

Visual Basic应用程序还支持大多数控件及OLE的拖放功能,可用控件的Drag方法连同某些属性和事件宋实现控件的拖放操作。

OLE的拖放使应用程序的数据交换功能大大增强。

本章将对键盘和鼠标事件进行详细讲解,使读者掌握利用键盘和鼠标进行编程的基本技术。

12.1键盘事件键盘事件是用户与程序之间交互操作中的主要元素之—。

单击鼠标和按下按键都可以触发事件,而且还提供进行数据输入的手段以及在窗口和菜单中移动的基本形式。

键盘事件有三种,即KeyPress、KeyUp和KeyDown事件。

窗体和可接受键盘输入的控件(如文本框TextBox、命令按钮CommandButton、图片框PictureBox、组合框ComboBox 等)都可识别这些事件。

值得注意的是,只有获得焦点的对象才能够接受键盘事件。

对于窗体,只有成为活动窗体并且窗体中的任何控件均未获得焦点时,才会产生窗体的键盘事件。

窗体中任何控件已经获得焦点时,会产生控件的键盘事件。

12.1.1 KeyPress事件当用户按下键盘上的某个键时,将触发KeyPress事件。

该事件可以用于窗体和大部分标准控件,严格来说,当按下某个键时,所触发的是具有输入焦点(FOCUS)的那个控件的KeyPress事件。

在某一时刻,输入焦点只能位于某一个控件上,如果窗体上没有可见或有效的控件,则输入焦点位于窗体上。

当一个控件或窗体拥有输入焦点时,该控件或窗体将接受从键盘上输入的信息。

例如,假定一个文本框拥有输入焦点,则从键盘上输入的任何字符都将在该文本框上回显。

KeyPress事件过程的一般格式是:Private Sub对象名KeyPress(KeyAscii as Integer)事件过程End Sub如果接受KeyPress事件的对象为控件数组,对应的事件过程的格式为:Private Sub 对象名_KeyPress(Index as Integer,KeyAscii AS Integer)事件过程End Sub其中,“Index”是数组元素的下标。

VB键盘与鼠标事件过程

VB键盘与鼠标事件过程

VB键盘与鼠标事件过程在VB中,键盘和鼠标事件是通过事件处理程序来实现的。

事件处理程序是一段代码,当用户与应用程序的用户界面交互时,会触发这段代码。

下面将详细介绍VB中键盘和鼠标事件的过程。

键盘事件过程:1.事件注册:在VB中,要处理键盘事件,首先需要将事件与特定的控件关联起来。

可以通过在设计视图中选择控件,然后在属性窗口中选择“事件”选项卡来注册事件。

2.事件处理程序:在事件注册后,可以在代码视图中看到为该事件创建的事件处理程序。

事件处理程序是一个特定的过程或函数,当事件触发时,会执行这段代码。

可以在事件处理程序中编写逻辑代码来响应键盘事件。

3. 事件参数:在事件处理程序中,可以使用事件参数来获取有关事件的信息。

键盘事件参数通常包括键码(KeyCode)和修饰键(Shift、Ctrl、Alt等)。

通过使用这些参数,可以确定用户按下的是哪个键,并采取相应的操作。

4.事件处理:在事件处理程序中,可以根据需要执行特定的操作。

例如,可以根据用户按下的键,执行不同的操作或调用不同的函数。

可以使用条件语句(如If语句)来根据键码执行不同的逻辑。

5.事件冒泡:在VB中,键盘事件通常具有冒泡的特性。

这意味着,当用户在一个控件上按下键时,除了该控件的键盘事件被触发外,还会触发其父控件的键盘事件。

这样可以在不同层次的控件中处理键盘事件。

鼠标事件过程:1.事件注册:与键盘事件类似,要处理鼠标事件,首先需要将事件与特定的控件关联起来。

可以通过在设计视图中选择控件,然后在属性窗口中选择“事件”选项卡来注册事件。

2.事件处理程序:在事件注册后,可以在代码视图中看到为该事件创建的事件处理程序。

事件处理程序是一个特定的过程或函数,当事件触发时,会执行这段代码。

可以在事件处理程序中编写逻辑代码来响应鼠标事件。

3. 事件参数:在事件处理程序中,可以使用事件参数来获取有关事件的信息。

鼠标事件参数通常包括鼠标按钮(Button)和鼠标位置(X、Y 坐标)。

VB 有关鼠标的操作

VB 有关鼠标的操作

VB 有关鼠标的操作假如没有鼠标,电脑的普及率绝对没有目前这么高。

在windows下,鼠标的作用不亚于键盘。

因此,在VB中设计基于windows下的应用程序,鼠标的操作和设计是非常重要的。

一、鼠标的移动、按键事件要想在VB程序中自如应用鼠标,先要了解有关鼠标的事件,并学会如何编写这些事件过程。

最常见的鼠标事件有:当在某个对象上移动鼠标、按下鼠标按键、释放鼠标按键时均会触发鼠标事件,它们分别是:MouseMove、MouseDown、MouseUp。

这三个鼠标事件过程均会返回四个参数:Button As Integer, Shift As Integer, X As Single, Y具体解释如下:1、MouseDown事件当单击鼠标上的任何一个按键之后,都会引起MouseDown事件。

许多对象都有这个事件。

如用鼠标在窗体上单击,可以引发这个事件,用鼠标单击“按钮”“标签”“文本框”等对象也可以引发这个事件。

该事件还带回来不少参数,下面是鼠标单击窗体任何位置所引发的MouseDown事件,单击其它对象所带回的参数与此相同:Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Integer,Y As Integer)End Sub其中:(1)、Button参数Button参数带回来的信息是用户按了鼠标上的哪能一个键,左键?右键?还是中间键?Button=1,说明用户按的是鼠标的左键;Button=2,说明用户按的是鼠标的右键;Button=4,说明用户按的是鼠标的中间键;(2)、Shift参数Shift参数带回来的是用户按鼠标按键时是否同时按下了键盘上的Shift、Ctrl、Alt键。

Shift=1,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift键;Shift=2,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl键;Shift=3,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift和Ctrl键;Shift=4,说明用户在按下鼠标按键的同时,还按下了键盘上的Alt键;Shift=5,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift和Alt键;Shift=6,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl和Alt键;Shift=7,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift、Ctrl和Alt键;(3)、X,Y参数X,Y参数带回来的是鼠标指针在屏幕上的坐标(x,y)。

VB程序中实现鼠标

VB程序中实现鼠标

在VB程序中实现鼠标右键双击西北工业大学(710072) 况正谦在Microsoft Visual BASIC(VB)中,窗体(Form)和控件(Control)等对象的单击(Click)和双击(Double-Click)事件都是指鼠标左键而言的。

鼠标右键的单击和双击事件在VB中没有对应的事件驱动过程去响应和处理。

但是在实际应用中(特别是一些可视化的图形软件)可能对鼠标键的功能定义比较丰富,单靠鼠标左键的单击和双击难以满足复杂的需要。

因此有必要开发和扩充VB应用程序对鼠标右键的响应能力。

VB定义的鼠标事件VB定义的鼠标事件有五种:单击(Click)、双击(DblClick)、鼠标键按下(MouseDown)、鼠标键松开(MouseUp)和鼠标光标移动(MouseMove)。

其中前两种事件单击和双击是专指鼠标左键而言,后三种则适用于所有鼠标键。

后三种鼠标事件的事件驱动过程有如下的形式: Sub对象名-鼠标事件(Button As Integer,Shift As Integer, X As Single, Y As Single) 用户插入的事件响应和处理代码End Sub 传递给事件过程的参数中,整型数Button的最低三位从右到左分别对应鼠标左、右、中三个键。

事件发生时,哪个或哪些键处于被按下的状态,Button的对应位就为1,否则为0。

程序中可以用VB的位运算AND来检测鼠标键的状态。

整数Shift的最低三位从右到左分别对应事件发生时键盘的Shift、Ctrl、Alt键。

事件发生时,Shift、Ctrl、Alt中的哪个或哪些键处于被按下的状态,参数Shift 的对应位就为1,否则为0。

单精度值X和Y存放的是事件发生时鼠标光标的X-Y坐标值。

该值对于窗体对象而言是鼠标光标在窗体客户区中的坐标,对于控件对象则是鼠标光标在窗体客户区中相对于控件左上角的坐标。

鼠标右键事件的检测实际上,鼠标的单击事件可以被分解为MouseDown和MouseUp两个事件,所以我们可以用MouseDown事件来取代单击事件。

VB模拟鼠标移动和单击

VB模拟鼠标移动和单击

VB模拟鼠标移动和单击VB模拟鼠标移动和单击这里要用到SetCursorPos(指定鼠标坐标)和mouse_event(综合鼠标击键和鼠标动作)两个API函数。

例:单击Command1时鼠标会到(500,500)这个点作鼠标左键单击动作。

Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPrivate Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)Private Const MOUSEEVENTF_LEFTDOWN = &H2Private Const MOUSEEVENTF_LEFTUP = &H4Private Sub Command1_Click()SetCursorPos 500, 500mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0End Sub关于Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)参数:dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。

Visual Basic 24 第二十四课 鼠标事件过程

Visual Basic 24 第二十四课 鼠标事件过程

说明: 说明: 1. Source 指的是正在被拖放的对象 2. State状态有三种取值 0 鼠标光标正在进入目标对象之中 1 鼠标光标正在退出目标对象之中 2 鼠标光标正位于目标对象之中 Drag方法 方法 格式 控件.Drag 值 取值为0,1,2三种值 0 取消控件的拖放 1 允许指定的控件拖放 2 结束控件的拖放,并产生一个DragDrop事件。
Visual Basic
第二十四课
语言程序设计
鼠标事件过程
第一节
鼠标事件
1.MouseDown事件 事件 按下鼠标时所发生的事件 格式: Private Sub 对象_MouseDown(Button As Integer,Shift As Integer, x as Single,y as Single) End Sub 2.MouseUp事件 事件 松开鼠标所发生的事件 Private Sub 对象_MouseUp(Button As Integer,Shift As Integer, x as Single,y as Single) End Sub 3.MouseMove事件 事件 鼠标移动时所发生的事件 Private Sub 对象_MouseMove(Button As Integer,Shift As Integer, x as Single,y as Single) End Sub
说明: 说明: Button参数 7种取值 参数 种取值 1 左键(LEFT_BUTTON) 2 右键(RIGHT_BUTTON) 3 左右键 4 中间键(MIDDLE_BUTTON) 5 左键和中间键 6 右键和中间键 7 左中右三键 Shift 指三种转换键(Shift,Ctrl,Alt) X,Y 为鼠标指针在控件上所处的位置
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB 有关鼠标的操作
假如没有鼠标,电脑的普及率绝对没有目前这么高。

在windows下,鼠标的作用不亚于键盘。

因此,在VB中设计基于windows下的应用程序,鼠标的操作和设计是非常重要的。

一、鼠标的移动、按键事件
要想在VB程序中自如应用鼠标,先要了解有关鼠标的事件,并学会如何编写这些事件过程。

最常见的鼠标事件有:
当在某个对象上移动鼠标、按下鼠标按键、释放鼠标按键时均会触发鼠标事件,它们分别是:MouseMove、MouseDown、MouseUp。

这三个鼠标事件过程均会返回四个参数:Button As Integer, Shift As
具体解释如下:
1、 MouseDown事件
当单击鼠标上的任何一个按键之后,都会引起MouseDown事件。

许多对象都有这个事件。

如用鼠标在窗体上单击,可以引发这个事件,用鼠标单击“按钮”“标签”“文本框”等对象也可以引发这个事件。

该事件还带回来不少参数,下面是鼠标单击窗体任何位置所引发的MouseDown事件,单击其它对象所带回的参数与此相同:
Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Integer,Y As Integer)
End Sub
其中:
(1)、Button参数
Button参数带回来的信息是用户按了鼠标上的哪能一个键,左键?右键?还是中间键?
Button=1,说明用户按的是鼠标的左键;
Button=2,说明用户按的是鼠标的右键;
Button=4,说明用户按的是鼠标的中间键;
(2)、Shift参数
Shift参数带回来的是用户按鼠标按键时是否同时按下了键盘上的Shift、Ctrl、Alt键。

Shift=1,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift键;Shift=2,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl键;
Shift=3,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift和Ctrl键;
Shift=4,说明用户在按下鼠标按键的同时,还按下了键盘上的Alt键;Shift=5,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift和Alt键;
Shift=6,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl和Alt 键;
Shift=7,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift、Ctrl和Alt键;
(3)、X,Y参数
X,Y参数带回来的是鼠标指针在屏幕上的坐标(x,y)。

2、MouseMove事件
当在任何对象上移动鼠标时,会引发MouseMove事件。

下面是鼠标在窗体上任何位置移动所引发的MouseMove事件,鼠标在其它对象上移动所带回的参数与此相同:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub
其中所返回的参数Button、Shift、X、Y与MouseDown事件过程返回的参数完全相同,这里不再重复。

3、MouseUp事件
当鼠标单击任何一个对象,松开鼠标按键时,都会引起MouseUp事件,同时还带回来不少参数,下面是鼠标单击窗体上任何一个位置,松开鼠标按钮时所引发的MouseUp事件,对于其它对象所带回的参数与此相同:
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub
其中所带回的参数Button、Shift、X、Y与MouseDown事件返回的参数完全相同,这里不再重复。

相关文档
最新文档