PDA

View Full Version : تابعclipcursor



mohsen_sh
پنج شنبه 04 خرداد 1385, 22:22 عصر
Private Type RECT
left As Long
top As Long
right As Long
bottom As Long
End Type

Private Declare Function ClipCursor Lib "user32.dll" (lpRect As Any) As Long
در مورد طرز کارش لطف کنید توضیح بدین برا محدود کردن موس در یک محدوده است
و در ضمن کاربرد این TYPE که در ابتدا تعریف می کییم چی هست

Hossein Bazyan
پنج شنبه 04 خرداد 1385, 22:45 عصر
از این تابع همچنانکه خودت اشاره کردی برای محدود کردن ماوس در یک منطقه مخصوص است
کار Type هم مختصات از گوشه چپ با تا گوشه راست پائین یک چهارضلعی که ماوس قرار است در آن محدود شود را مشخص میکند.

vb_nima
جمعه 05 خرداد 1385, 10:50 صبح
بیین type rect شامل چهار تا مختصات که شامل بالا و پایین و چپ و راست است.در بثشتر api ها برای بیان یک مختصات از این type استفاده می شود و به وسیله ی آن مختصات کادر مورد نظر به تابع فرستاده می شود .مثل زمانی که بخواهید مختصات یک پنجره را بگیرید از این type استفاده می کنند.

mohsen_sh
جمعه 05 خرداد 1385, 21:18 عصر
با تشکر از جوابتون
حالا از این type تعریف شده چه طوری استفاده کنم واسه ارسال به تابع clipcursor چون این تابع فقط یه آرگومان داره در حالیکه type ما 4 تا عددد را شامل میشه

Hossein Bazyan
شنبه 06 خرداد 1385, 12:10 عصر
با تشکر از جوابتون
حالا از این type تعریف شده چه طوری استفاده کنم واسه ارسال به تابع clipcursor چون این تابع فقط یه آرگومان داره در حالیکه type ما 4 تا عددد را شامل میشه

این هم یکنمونه برنامه
در تابع MouseMahdod دو آرگومان را باید بدی که یکی از آنها اختیاری است

مقدار hWnd شکل یا قسمتی که میخوای ماوس در آن محدود شود که در مثال ما Picturbox بنام Pic1 است . هر hWnd ی را بهش بدی ماوس را در محدوده آن محدود میکند.
یک مقدار Boolean برای متغییر MouseStatus که اگر True باشد ماوس را محدود واگر False باشد ماوس را آزاد میکند.و پیش فرض آن False است .در ضمن برای آزاد کردن ماوس هم باید مقدار 0 را به این تابع ClipCursorClear بفرستی

اعلام نتیجه برای استفاده دوستان یادت نره

mohsen_sh
شنبه 06 خرداد 1385, 17:39 عصر
ممنون از شما دوست عزیز

mohsen_sh
شنبه 06 خرداد 1385, 17:41 عصر
Private Type RECT

left As Long

top As Long

right As Long

bottom As Long

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 = "Limit Cursor Movement"

Command2.Caption = "Release Limit"

End Sub

Private Sub Command1_Click()

'Limits the Cursor movement to within the form.

Dim client As RECT

Dim upperleft As POINT

'Get information about our wndow

GetClientRect Me.hWnd, client

upperleft.x = client.left

upperleft.y = client.top

'Convert window coördinates to screen coördinates

ClientToScreen Me.hWnd, upperleft

'move our rectangle

OffsetRect client, upperleft.x, upperleft.y

'limit the cursor movement

ClipCursor client

End Sub

Private Sub Command2_Click()

'Releases the cursor limits

ClipCursor ByVal 0&

End Sub

Private Sub Form_Unload(Cancel As Integer)

'Releases the cursor limits

ClipCursor ByVal 0&

End Sub
از این کد هم میشه استفاده کرد