Burada şunu yapmak istiyoruz. Fare imleci bizim bellirlediğimiz koordinatlardan dışarı çıkamasın, evcil ve söz dinleyen bir fare olsun
)
ClipCursor function: Fareyi dikdörtgen alan içine hapseder. Fare farklı bir alana çekilirse (örn: SetCursorPos apisi ile...) Windows onu tekrar bu alan içine alır. Form alanı bizim farenin hareket alanı olacaktır.
GetClientRect function: Bir formun alanını verir. Elde edilen değer ekran koordinatlarına göre olan değer değildir. Bu değeri sonra ClientToScreen function ile screen koordinatlarına uygun hale getireceğiz. Elde edilen değerleri OffsetRect function 'una vereceğiz ve bize belli bir diktörtgen çizecek.
Not: Eğer ClipCursor fonksiyonunu çalıştırdıktan sonra formu kapatıranız, fare verdiğiniz alana hapsolmuş şekilde yaşamasına devam edecektir. Bu yüzden formun unload prosedürüne ClipCursor fonsiyonunu sıfıra eşleyen kodu yazmayı unutmayın. (Bkz. aşağıda
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)
Private Sub Form_Load()
Command1.Caption = "Fareleri hapsedin"
Command2.Caption = "Bırak garibanı be!"
End Sub
Private Sub Command1_Click()
Dim client As RECT
Dim upperleft As POINT
GetClientRect Me.hWnd, client
upperleft.x = client.left
upperleft.y = client.top
ClientToScreen Me.hWnd, upperleft
OffsetRect client, upperleft.x, upperleft.y
ClipCursor client
End Sub
Private Sub Command2_Click()
ClipCursor ByVal 0&
End Sub
Private Sub Form_Unload(Cancel As Integer)
ClipCursor ByVal 0&
End Sub
ClipCursor function: Fareyi dikdörtgen alan içine hapseder. Fare farklı bir alana çekilirse (örn: SetCursorPos apisi ile...) Windows onu tekrar bu alan içine alır. Form alanı bizim farenin hareket alanı olacaktır.
GetClientRect function: Bir formun alanını verir. Elde edilen değer ekran koordinatlarına göre olan değer değildir. Bu değeri sonra ClientToScreen function ile screen koordinatlarına uygun hale getireceğiz. Elde edilen değerleri OffsetRect function 'una vereceğiz ve bize belli bir diktörtgen çizecek.
Not: Eğer ClipCursor fonksiyonunu çalıştırdıktan sonra formu kapatıranız, fare verdiğiniz alana hapsolmuş şekilde yaşamasına devam edecektir. Bu yüzden formun unload prosedürüne ClipCursor fonsiyonunu sıfıra eşleyen kodu yazmayı unutmayın. (Bkz. aşağıda
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)
Private Sub Form_Load()
Command1.Caption = "Fareleri hapsedin"
Command2.Caption = "Bırak garibanı be!"
End Sub
Private Sub Command1_Click()
Dim client As RECT
Dim upperleft As POINT
GetClientRect Me.hWnd, client
upperleft.x = client.left
upperleft.y = client.top
ClientToScreen Me.hWnd, upperleft
OffsetRect client, upperleft.x, upperleft.y
ClipCursor client
End Sub
Private Sub Command2_Click()
ClipCursor ByVal 0&
End Sub
Private Sub Form_Unload(Cancel As Integer)
ClipCursor ByVal 0&
End Sub

