PDA

نسخه کامل مشاهده نسخه کامل : آیا میشه برای منو در vb آیکون گذاشت؟



amirxbest
15-10-2010, 19:28
file:///C:/DOCUME%7E1/Amir/LOCALS%7E1/Temp/moz-screenshot.pngسلام دوستان میخواستم ببینم در vb میشه برای منو ها ایکون گذاشت؟
منظورم اینه:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

ولی من میخوام اینجوری باشه:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

واقعا از کمکتون ممنون میشم:20:

_H2_
18-10-2010, 00:18
سلام
ساده ترین راه ان است که از چهار API زیر که در کتابخانه user32 هستند استفاده کنید:
GetMenu و GetSubMenu و GetMenuItemID و ModifyMenu

با سه API اول id منو را بدست می آورید و با API آخری و با پارامتر MF_BITMAP عکس مورد نظر را تخصیص میدهید.
روی موارد فوق جستجویی کنید، اگر نتوانستید کد را پیدا کنید، اعلام کنید، کدش را در می آورم ...

=====

ضمناً موارد این تیپی سالهای متمادی است که در نسخه های VB7,8,9,10 حل شده و اصلاً چیز مهمی نیستند.
الآن در VB2010 شما به راحتی میتوانید در یک منو عادی TextBox و ComboBox قرار دهید!

(حالا از عجایب WPF هم فاکتور میگیریم)
موفق باشید.

parham159
27-10-2010, 08:25
سلام دوست عزيز من به روش زير به منوها ايكون اضافه ميكنم
براي اضافه آيکون به منوهاي موجود در يک برنامه visual basic بايستي از توابع زير که موجود در کتابخانه User32 هستند استفاده کنيد :
۱ - GetMenu
۲ - GetSubMenu
۳ - GetMenuItemID
۴ - SetMenuIcon
ابتدا يک ماژول ايجاد کنيد و توابع فوق را در آن declare کنيد :



Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long

Public Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long

Public Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long


براي قرار دادن يک آيکون در کنار يکي از آيتمهاي منو نياز به handle فرم ، شماره منو ، شماره آيتم مورد نظر و نيز يک picture داريم :


Public Function SetMenuIcon(FrmHwnd As Long, MainMenuNumber As Long, MenuItemNumber As Long, Flags As Long, BitmapUncheckedHandle As Long, BitmapCheckedHandle As Long)x
Dim lngMenu As Long
Dim lngSubMenu As Long
Dim lngMenuItemID As Long
lngMenu = GetMenu(FrmHwnd)x
lngSubMenu = GetSubMenu(lngMenu, MainMenuNumber)x
lngMenuItemID = GetMenuItemID(lngSubMenu, MenuItemNumber)x
,SetMenuIcon = SetMenuItemBitmaps(lngMenu, lngMenuItemID, Flags
BitmapUncheckedHandle, BitmapCheckedHandle)x
End Function


image هاي مورد نظر خود را با ابعادي حدود 16*16 پيکسل و بصورت PictureBox در فرم خود قرار دهيد و خاصيت Visible مربوط به PictureBox ها را False کنيد .
سپس منوهاي خود را توسط Menu Editor طراحي کنيد .


File و Edit منوهاي اصلي هستند . پارامتر MainMenuNumber در تابع فوق شماره منوي اصلي است که براي File برابر صفر و براي Edit برابر يک مي باشد . پارامتر MenuItemNumber شماره هر آيتم در يک منو است که اين پارامتر نيز از صفر شروع مي شود .
اکنون براي اضافه کردن سه آيکون به سه آيتم منوي File کدهاي زير را در Form_Load بنويسيد :



Private Sub Form_Load()x
SetMenuIcon Me.hwnd, 0, 0, 0, pic1.Picture, pic1.Picture
SetMenuIcon Me.hwnd, 0, 1, 0, pic2.Picture, pic2.Picture
SetMenuIcon Me.hwnd, 0, 2, 0, pic3.Picture, pic3.Picture