PDA

View Full Version : مشخص شدن قرارگیری ماوس روی کنترل تصویر!؟



drhadi_20
دوشنبه 24 اردیبهشت 1386, 13:38 عصر
آیا در کنترل picture و به خصوص Image راهی وجود داره که اگه pointer ماوس روی آن قرار بگیره مشخص بشه؟ مثلا اگر بخواهیم وقتی ماوس روی یک تصویر برود مثلا صدای کلیک پخش گردد و یا تصویر به تصویر دیگری تبدیل گردد.....

__siavash__
دوشنبه 24 اردیبهشت 1386, 13:42 عصر
آیا در کنترل picture و به خصوص Image راهی وجود داره که اگه pointer ماوس روی آن قرار بگیره مشخص بشه؟ مثلا اگر بخواهیم وقتی ماوس روی یک تصویر برود مثلا صدای کلیک پخش گردد و یا تصویر به تصویر دیگری تبدیل گردد.....
خوب هر کدی رو که میخوای رو Image1_MouseMove بنویس !

drhadi_20
شنبه 29 اردیبهشت 1386, 20:21 عصر
با mousemove نمیشه اینکار را انجام داد، بطور مثال فرض کنید میخواهید وقتی pointer روی تصویر قرار گرفت یک beep اجرا گردد، در این صورت با تکان موس روی تصویر پشت سر هم این دستور اجرا میگردد یا مثلا بخواهیم دستور a=a+1 اجرا گردد همینطور a اضافه میگردد و یا کارهای مشابه، البته میشه با یه کم کار این مشکلات رو حل کرد ولی میخواستم ببینم راه دیگه وجود نداره؟

Hossein Bazyan
شنبه 29 اردیبهشت 1386, 21:25 عصر
سلام
میتوانی در MousMove گنترل کنی که فقط یکبار بوق بزنه
خیلی ساده است

__siavash__
شنبه 29 اردیبهشت 1386, 21:51 عصر
یه دونه کنترل PictureBox و یه تایمر با Interval = 10 رو فرمت بذار بعد این کد رو براش کپی کن !
وقتی موس رو PictureBox میره برای یک بار یه دستور اجرا میشه ( این جا صدای بیپ میاد )


Option Explicit
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As Rect) As Long
Private Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function PtInRect Lib "user32.dll" (ByRef lpRect As Rect, ByVal X As Long, ByVal Y As Long) As Long
---------------------------------------------------------------------------
Private Sub Timer1_Timer()
Dim rect1 As Rect
Dim point As POINTAPI

GetWindowRect Picture1.hwnd, rect1
GetCursorPos point
If PtInRect(rect1, point.X, point.Y) <> 0 Then
Beep
Timer1.Enabled = False
End If
End Sub

البته تو همون روبداد MouseMove میتونی یه شمارنده بذاری که فقط یک بار دستور رو انجام بده !
احتمالا شما متغیر تو همون رویداد معرفی میکنی ؟!؟!

reza.palang
شنبه 29 اردیبهشت 1386, 22:54 عصر
میتونید خیلی ساده از MousEnter استفاده کنی. توی #C هست، توی VB هم باید باشه

__siavash__
یک شنبه 30 اردیبهشت 1386, 00:43 صبح
میتونید خیلی ساده از MousEnter استفاده کنی. توی #C هست، توی VB هم باید باشه
توی vB من رویداد MouseEnter رو ندیدم !!!!!!

reza.palang
یک شنبه 30 اردیبهشت 1386, 11:12 صبح
اگه VB همچین چیزینداشته باشه که باید انداختش دور.....
زیر MouseDown و بالای MouseHover
-----------------------------------------------
البته من توی VB.Net چک کردم.

Hossein Bazyan
یک شنبه 30 اردیبهشت 1386, 13:06 عصر
اگه VB همچین چیزینداشته باشه که باید انداختش دور.....
زیر MouseDown و بالای MouseHover
-----------------------------------------------
البته من توی VB.Net چک کردم.
سلام
دوست عزیز این فقط در NET. وجود داره و در وی بی 6 وجود نداره

__siavash__
یک شنبه 30 اردیبهشت 1386, 17:04 عصر
اون کدی رو که در بالا گذاشتم هندل PictureBox رو میگیره و تشخیص میده موس روش هست یا نه اما برای Image نتونستم این کارو بکنم یعنی هندلشو نتونستم بگیرم ( پراپرتی hwnd. نداره ) ؟؟؟
مگه کنترل Image هندل نداره ؟

drhadi_20
دوشنبه 07 خرداد 1386, 15:26 عصر
سلام دوستان، از همگی ممنونم، البته با استفاده از image.mousemove و form.mousemove میشه اینکارو انجام داد، vb.net داره ولی توی vb6 همچین امکانی ظاهرا نداره، البته با این روشها و یه کم کد نویسی بیشتر میشه براحتی اینکارو انجام داد ولی میخواستم بدونم که بدون کد نویسی بیشتر و بطور مستقیم چنین امکانی وجود داره یا نه که ظاهرا نداره!
البته نمیشه گفت باید vb رو انداخت دور!! چون خیلی هم سخت نیست این کار رو انجام داد فقط باید چند خط کد نوشت، مهم اینه که چنین امکانی وجود داره، در عوض ببینید خیلی چیزای دیکه تو vb وجود داره که توی c باید براش چند برابر vb کد نوشت، ولی اونجا هم مهم اینه که این امکان در c وجود داره، به خصوص وقتی قبلا توی DOS برنامه مینوشتم یکی از دوستانم که c کار میکرد از برخی از امکانات quickbasic شگفت زده میشد که برخی کارها چقدر در basic راحت تر و خلاصه تره!

در هر صورت از همگی سپاسگزارم

Mbt925
سه شنبه 08 خرداد 1386, 08:43 صبح
اضافه کردن رویداد MouseEnter و MouseExit
به PictureBox یا Image خیلی سادست.

کنترل Image
Hwnd نداره ولی میشه راحت بهش اضافه کرد.

کار دوستمون با رویداد MouseMove راه میوفته ولی خیلی حرفه ای نمیشه.

اگه نیاز دارین یه PictureBox بسازم که رویدادایی که گفتم رو داشته باشه؟

__siavash__
سه شنبه 08 خرداد 1386, 13:20 عصر
اضافه کردن رویداد MouseEnter و MouseExit
به PictureBox یا Image خیلی سادست.

کنترل Image
Hwnd نداره ولی میشه راحت بهش اضافه کرد.

کار دوستمون با رویداد MouseMove راه میوفته ولی خیلی حرفه ای نمیشه.

اگه نیاز دارین یه PictureBox بسازم که رویدادایی که گفتم رو داشته باشه؟
میشه بگی چه طوری میشه به کنترلImage پراپرتی Hwnd اضافه کرد.

Mbt925
سه شنبه 08 خرداد 1386, 19:27 عصر
میشه بگی چه طوری میشه به کنترلImage پراپرتی Hwnd اضافه کرد.

یه اکتیوایکس می سازیم که یه Image باشه به اضافه ی HWND