PDA

View Full Version : سوال: مشکل در Mouse Pointer



shahabbasic
یک شنبه 30 مرداد 1390, 00:05 صبح
من میخوام وقتی ماوس روی یک لیبل بره نشانگر ماوس همین علامت دستکش سفید بشه که توی اینترنت وقتی روی لینک میبریم میاد
توی لیست Mouse Pointer رو نگاه کردم همچین گزینه ای نداشت
این آیکون رو از خود ویندوز استخراج کردم و گذاشتم برای Mouse icon لیبل مورد نظر و Mouse Pointer رو هم کاستوم گذاشتم ولی پیغام خطا میده و این آیکون با پسوند ico رو قبول نمیکنه
چکار کنم؟:ناراحت:

setroyd
یک شنبه 30 مرداد 1390, 00:24 صبح
invalid picture این خطا رو میده درسته ؟ اگه این خطا رو میده یعنی برای vb قابل خواندن نیست ولی برات با api کدش رو برات میزارم

shahabbasic
یک شنبه 30 مرداد 1390, 00:38 صبح
invalid picture آره همین

setroyd
یک شنبه 30 مرداد 1390, 01:03 صبح
این به دلیل اینکه vb بعضی از picture ها cursor هارو قبول نمیکنه به دلیل نوع اونها . ولی با api کاری نیست که نشه کرد چون خودشم داره رو همین اساس کار ویندوز رو انجام میده .

IamOverlord
یک شنبه 30 مرداد 1390, 01:09 صبح
invalid picture آره همین

VB6 به طور پیش فرض Animated Cursor ها رو قبول نمی کنه.

IamOverlord
یک شنبه 30 مرداد 1390, 01:21 صبح
من میخوام وقتی ماوس روی یک لیبل بره نشانگر ماوس همین علامت دستکش سفید بشه که توی اینترنت وقتی روی لینک میبریم میاد
توی لیست Mouse Pointer رو نگاه کردم همچین گزینه ای نداشت
این آیکون رو از خود ویندوز استخراج کردم و گذاشتم برای Mouse icon لیبل مورد نظر و Mouse Pointer رو هم کاستوم گذاشتم ولی پیغام خطا میده و این آیکون با پسوند ico رو قبول نمیکنه
چکار کنم؟:ناراحت:

برای این کار می تونی از دو تابع API به نام های LoadCursor و SetCursor از کتابخانه ی User32.DLL استفاده کنی. اولی برای Load کردن Cursor هست که برای Set کردن Cursor توسط تابع دومی به خروجیش نیاز داری.

نمونه:

1. یه Label روی Form ات بذار.
2. بدون تغییر نام Label ات این کد رو بنویس:

Private Const IDC_HAND = 32649&
Private Const IDC_ARROW = 32512&
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SetCursor LoadCursor(0, IDC_HAND)
End Sub

محسن واژدی
یک شنبه 30 مرداد 1390, 08:42 صبح
با API ی مطرح شده توسط جناب IamOverlord این کار انجام شده شدنی است، اما میتوانید hand_cursor زیر را نیز استفاده کنید
روش استفاده نیز طبق پست اول میباشد

موفق باشید

shahabbasic
یک شنبه 30 مرداد 1390, 13:59 عصر
با API ی مطرح شده توسط جناب IamOverlord این کار انجام شده شدنی است، اما میتوانید hand_cursor زیر را نیز استفاده کنید
روش استفاده نیز طبق پست اول میباشد

موفق باشید
آره اینجوری بهتره... جواب داد... چون با کد باز محیط کدنویسیم شلوغ میشه و روی حجم تاثیر میذاره