PDA

View Full Version : سوال: موس روی فرم هست یا نه



ali_1234
پنج شنبه 29 بهمن 1388, 10:14 صبح
سلام دوستان من یه سوال دارم و اونم اینکه چطور می شه فهمید که آیا موس روی فورم هست یا نه.:متفکر:

ali_1234
پنج شنبه 29 بهمن 1388, 11:41 صبح
سلام.
کسی نیست به داده ما برسه.
ممنون می شم اگه کمکم کنید خیلی لازم دارم.:بوس:

javadt
پنج شنبه 29 بهمن 1388, 12:15 عصر
شما مختصات فرم رو حساب کن
بعد با یک تایمر چک کن ببین که x و y موس روی توی مختصات فرم هستند یا نه

ali_1234
پنج شنبه 29 بهمن 1388, 12:35 عصر
سلام دوست عزیز javadt خیلی ممنون که جواب دادین می شه یکم بیشتر توضیح بدین.

moos111
پنج شنبه 29 بهمن 1388, 12:40 عصر
اول این تابع رو در یک ماژول تعریف کن






Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As Long
Private Type PointAPI 'ãÎÊÕÇÊ äÓÈÊ Èå ãæÓ
X As Long
Y As Long
End Type
Private Type RECT 'ãÎÊÕÇÊ äÓÈÊ Èå ÏÓ˜Êǁ
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Public Function GetMouseOver(hWnd As Long) As Boolean
Dim wRect As RECT
Dim Mouse As PointAPI
GetCursorPos Mouse
GetWindowRect hWnd, wRect
If (Mouse.X <= wRect.Right And Mouse.X >= wRect.Left) And (Mouse.Y <= wRect.Bottom And Mouse.Y >= wRect.Top) Then
GetMouseOver = True
Else
GetMouseOver = False
End If
End Function








و بعدش یک تایمر روی فرمت قرار بده و Interval تایمر رو 100 قرار بده و بعد کد زیر رو در رویداد Timer تایمرت قرار بده





Private Sub Timer1_Timer()
If GetMouseOver(Me.hWnd) = True Then
دستوری که باید اجرا بشود.
End If
End Sub

javadt
پنج شنبه 29 بهمن 1388, 13:01 عصر
بفرما دوست عزیز

ali_1234
پنج شنبه 29 بهمن 1388, 13:40 عصر
سلام دوستان خیلی ممنون که جواب دادین مشکلم حل شد واقعا" نمی دونم چطوری ازتون تشکر کنم.
بازم ممنون که جواب دادین:بوس:.................