怎样捕捉窗体的鼠标?

解决方案 »

  1.   

    '注意!:如果窗体的BorderStyle属性被设为sizeable(2或5),则当你改变窗体的大小时鼠标就会“逃脱”程序的监控!因此你最好把BorderStyle设为0、1、3或4。
    '把以下代码添加如模块:
    Option Explicit
    Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type
    Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
    Public Sub DisableTrap(CurFORM As Form)
    Dim erg As Long
    '声明过程变量
    '设置新坐标
    Dim NewRect As RECT
    CurFORM.Caption = "释放鼠标"
    With NewRect
    .Left = 0&
    .Top = 0&
    .Right = Screen.Width / Screen.TwipsPerPixelX
    .Bottom = Screen.Height / Screen.TwipsPerPixelY
    End With
    erg& = ClipCursor(NewRect)
    End Sub
    Public Sub EnableTrap(CurFORM As Form)
    Dim x As Long, y As Long, erg As Long
    '声明过程变量
    '设置新坐标
    Dim NewRect As RECT
    '得到TwipsperPixel
    '窗体的ScaleMode必须设为Twips!!!
    x& = Screen.TwipsPerPixelX
    y& = Screen.TwipsPerPixelY
    CurFORM.Caption = "捕捉鼠标"
    '设置光标的范围
    With NewRect
    .Left = CurFORM.Left / x&
    .Top = CurFORM.Top / y&
    .Right = .Left + CurFORM.Width / x&
    .Bottom = .Top + CurFORM.Height / y&
    End With
    erg& = ClipCursor(NewRect)
    End Sub
    '2、在窗体上添加两个命令按钮(Command Button)。
    '3 ?把以下代码添加如FORM1?
    Private Sub Command1_Click()
    EnableTrap FORM1
    End Sub
    Private Sub Command2_Click()
    DisableTrap FORM1
    End Sub
    Private Sub FORM_Unload(Cancel As Integer)
    '程序结束时释放鼠标。
    DisableTrap FORM1
    End Sub