کار سختی نیست از منبعی که در انتهای صفحه آمده استفاده شده که تابع ویندوزی است
Declare PtrSafe Function PtInRect Lib "user32" (lpRect As RECT, pt As POINTAPI) As Long'
Use Belows Only
Declare PtrSafe Function PtInRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
_ , Public Function EditSubclass(ByVal hwnd As LongPtr, ByVal Msg As Long, ByVal wParam As LongPtr
ByVal lParam As LongPtr, ByVal Uid As LongPtr, ByVal dwData As LongPtr) As Long
Static r As RECT
در پیام Paint
DefSubclassProc hwnd, Msg, wParam, ByVal lParam
GetWindowRect hwnd, r
OffsetRect r, -r.left, -r.top
r.left = r.right - 20
r.right = r.right
r.bottom = r.bottom - 0.9
r.top = r.top + 0.9
Case WM_LBUTTONDOWN
Dim p As POINTAPI
Dim nn As RECT
(p.x = CLng(lParam And 65535) 'LoWord(lParam
(p.y = CLng(lParam \ 65535) 'HiWord(lParam
GetClientRect hwnd, nn
nn.left = r.left - 2
nn.right = r.right + 2
If PtInRect(nn, p.x, p.y) Then
" ... MsgBox "You Clicked Me
End If
.....RedrawWindow
مورد بالا تست شده
در 32 بیت
Declare Function PtInRect Lib "user32.dll" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Example
مثال زیر چک میکند کرسر ماوس داخل یا خارج از پنجره ی فرم یک است
Determine if the mouse cursor is inside or outside
of window Form1
که اینکار بوسیله ی چک کردن موقعیت کرسر ماوس به واحد Point در صفحه با مستطیل پنجره انجام شده.
This is done by checking the point of the mouse
.cursor with the rectangle of the window
دریافت مختصات ماوس در صفحه
Dim mousept As POINT_TYPE ' receives mouse
coordinate
دریافت مستطیل فرم یک
Dim winrect As RECT ' receives rectangle of Form1
دریافت عدد یک اگر داخل مستطیل باشد و صفر اگر در آن نباشد
Dim isinside As Long ' receives 1 if inside or 0 if outside
Dim retval As Long ' return value for other functions
تعیین موقعیت کرسر ماوس
retval = GetCursorPos(mousept) ' determine the mouse cursor's position
گرفتن مختصات بالایی سمت چپ و مختصات پایینی سمت راست مستطیل فرم یک اگر کلاین رکت استفاده شود left و topرا صفرمی دهد.
retval = GetWindowRect(Form1.hWnd, winrect) ' determine Form1's rectangle
چک می کند تا ببینیم آیا کرسر ماوس داخل مستطیل فرم یک قرار دارد.
Check to see if the mouse cursor is located inside'
of the Form1 rectangle
(isinside = (winrect, mousept.x, mousept.y
اگر کرسر ماوس داخل آن مستطیل باشد در پنجره ی دیباک یا Ctrl+G چاپ میکند که کرسر ماوس در حال حاضر داخل فرم ۱ است و اگر داخل آن مختصات نباشد چاپ میکند کرسر ماوس هم اکنون بیرون از فرم یک است
If isinside = 1 Then
Debug.Print "The mouse cursor is currently inside
".of Form1
Else
Debug.Print "The mouse cursor is currently outside of
".Form1
End If
در کل PtInRect چک میکند Point در داخل Rectangle هست یاخیر اگر باشد جوابش عدد غیر صفر است طبق داکیونت --->>
ptinrect منبع