Limit Mouse


Option Explicit

Private Type RECT
   left                 As Integer
   top                  As Integer
   right                As Integer
   bottom               As Integer
End Type

Private Type POINT
   x                    As Long
   y                    As Long
End Type

Private Declare Sub ClipCursor Lib “user32” (lpRect As Any)
Private Declare Sub GetClientRect Lib “user32” (ByVal hWnd As _
      Long, lpRect As RECT)
Private Declare Sub ClientToScreen Lib “user32” (ByVal hWnd As _
      Long, lpPoint As POINT)
Private Declare Sub OffsetRect Lib “user32” (lpRect As RECT, _
       ByVal x As Long, ByVal y As Long)
Public Sub LimitCursorMovement(ctl As Object)
  
   Dim client           As RECT
   Dim upperleft        As POINT
   Dim lHwnd As Long
   On Error Resume Next
   lHwnd = ctl.hWnd
   If lHwnd = 0 Then Exit Sub
   GetClientRect ctl.hWnd, client
   upperleft.x = client.left
   upperleft.y = client.top
   ClientToScreen ctl.hWnd, upperleft
   OffsetRect client, upperleft.x, upperleft.y
   ClipCursor client
End Sub

Public Sub ReleaseLimit()
   ‘Releases the cursor limits
   ‘Be sure to call on unloading the form
   ClipCursor ByVal 0&
End Sub

Private Sub cmdNormal_Click()
  ReleaseLimit
End Sub

Private Sub cmdSetLimit_Click()
  LimitCursorMovement Me
End Sub

Private Sub Form_Load()
  ReleaseLimit
 
End Sub

Private Sub Form_Unload(Cancel As Integer)
  ReleaseLimit
End Sub

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s