PDA

View Full Version : حرکت ماوس



Amir_vb.Net
چهارشنبه 24 بهمن 1386, 12:13 عصر
با سلام خدمت دوستان عزیز


من یه دکمه توی فرمم دارم که میخوام وقتی روی اون کلیک میکنم تا وقتی کلیک ماوس
پایین هست ماوس قفل بشه

یعنی هیچ حرکتی نداشته باشه :خجالت:

Amir_vb.Net
چهارشنبه 24 بهمن 1386, 16:09 عصر
یه کم عجله دارم اگه می تونید من رو راهنمایی کنید

Mbt925
چهارشنبه 24 بهمن 1386, 23:11 عصر
وقتی موس قفل شد ، از کجا باید فهمید که کلید موس رها شده ؟؟؟

اوبالیت به بو
پنج شنبه 25 بهمن 1386, 12:01 عصر
من این کار کردم ولی مختص ماوس رو پیدا کردم.
الان این تابع API که برات گذاشتم هم ماوس و هم صفحه کلید رو قفل می کنه. هیچ کاری نمی تونی بکنی.
یادش بخیر پارسال تو کارگاه چقدر کرم میریختیم.

Private Declare Function BlockInput Lib "user32.dll" (ByVal fBlock As Long) As Long

مقدار BlockInput رو 1 بده قفل میشه.

Mbt925
پنج شنبه 25 بهمن 1386, 12:08 عصر
دوست عزیز ، به سوال توجه کنید :

با فشرده شدن قفل بشه و با رها شدن باز بشه !!!

اوبالیت به بو
پنج شنبه 25 بهمن 1386, 12:09 عصر
خوب این کد رو می تونن تویه رویداد MouseDown و Mouse Up بنویسن. خیلی سادس!
قفل 1
باز 0

Mbt925
پنج شنبه 25 بهمن 1386, 12:19 عصر
بنظرتون وقتی موس قفل بشه ، MouseUp ای اتفاق میوفته؟

اوبالیت به بو
پنج شنبه 25 بهمن 1386, 12:40 عصر
من معذرت می خوام همه چی رو قاطی پاتی کردم. شما درست میگین این کد من وقتی قفل کنه دیگه قفل کرده و هیچ راهی نیستش.
دوستان من از همتون معذرت می خوام همچنین از جناب mbt925!

ƒxmahdi
پنج شنبه 25 بهمن 1386, 14:07 عصر
با شیء MBMouse می شه محدوده ای را را برای حرکت ماوس تعیین کرد مثلا هنگامی که رویداد mouse down انجام می شه ماوس نتونه از محدوده کامند خارج بشه و هنگام رویداد mouse up وضعیت عادی بشه یه پروژه کوچلو همراه با یه فایل Help آماده کردم ببین چطوره ؟

Amir_vb.Net
پنج شنبه 25 بهمن 1386, 15:19 عصر
دوست عزیز ممنون ولی این چواب سوال من نبود

Amir_vb.Net
پنج شنبه 25 بهمن 1386, 15:31 عصر
البته تا حدودی به جواب رسیدم
ولی ببین وقتی کلیک می کنی همون جا قفل بشه

حالا من یه کم باهاش کار می کنم ببینم می تونم تغییرش بدم

Mbt925
پنج شنبه 25 بهمن 1386, 16:15 عصر
از ترفند زیر استفاده کنید:





Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long

Private Declare Function ClipCursor Lib "user32.dll" (ByRef lpRect As Any) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Dim LockM As RECT




Private Sub Command2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Call GetWindowRect(Command2.hwnd, LockM)

LockM.Left = LockM.Left + X / 15
LockM.Right = LockM.Left + 1

LockM.Top = LockM.Top + Y / 15
LockM.Bottom = LockM.Top + 1

ClipCursor LockM

End Sub


Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Call ClipCursor(0&)

End Sub

ƒxmahdi
پنج شنبه 25 بهمن 1386, 16:17 عصر
بهتر از این روش سراغ ندارم
button Click