PDA

View Full Version : اضافه آيکون به منوهاي موجود در يک برنامه visual basic



سپهر-111
پنج شنبه 12 بهمن 1391, 23:18 عصر
سلام دوستان من میخوام به منوهایی که با منو ادیتور خود ویبی درست کردم ایکن اضافه کنم(برا قشنگی!)
خواستم از این کدی که پایین گذاشتم استفاده کنم ولی جواب نمیده ، ممنون میشم اساتید محترم برسی نمایند و ایراد برنامه را ذکر بفرمایند
باتشکر از حسن توجه دوستان

(این کدها رو از قسمت ارشیو همین سایت کپی کردم!)


اضافه آيکون به منوهاي موجود در يک برنامه visual basic

براي اضافه آيکون به منوهاي موجود در يک برنامه 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

Hashemvp
جمعه 13 بهمن 1391, 06:27 صبح
سلام
دوستان عزیز ی خواهش دوستانه ازتون دارم
وقتی سوالی دارید ک مشکل نمیدونید از کجاست
لطفا نیایید سورس رو اینجا کپی کنید و بعد بگید اینو بساز اونو بساز من خودمو مثال میزنم خیلی گ....!!! حال ندارم پروژه جدید باز کنم ماژول لیست باکس و هزار تا چیز دیگه رو اضافه کنم تا ببینم
مشکل فلانی چی بوده
قصد توهین یا هر چیز دیگه ای ک فکر میکنید ندارم

ولی اگر میخوایید سریع ب جواب برسید و کسی هم ک میخواد بررسی کنه سریع تر بفهمه مشکل شما از کجاست
اگر نمیخوایید سورس اصلی برنامه رو بذارید حداقل ی نمونه کد درست کنید ک مربوط به مشکلتون هست تا راحت تر بررسی بشه

معذرت میخوام اگر کسی ناراحت شد

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

چیزی هم ک لازم داری تا picturbox و ی منو ک سه تا زیر مجموعه داشته باشه

Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400&
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private 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

Private Sub Form_Load()
Dim hMenu As Long, hSubMenu As Long
Picture1.Visible = False
Picture2.Visible = False
Picture3.Visible = False
hMenu = GetMenu(Me.hwnd)
hSubMenu = GetSubMenu(hMenu, 0)
SetMenuItemBitmaps hSubMenu, 0, MF_BYPOSITION, Picture1.Picture, Picture1.Picture
SetMenuItemBitmaps hSubMenu, 1, MF_BYPOSITION, Picture2.Picture, Picture2.Picture
SetMenuItemBitmaps hSubMenu, 2, MF_BYPOSITION, Picture3.Picture, Picture3.Picture
End Sub


موفق باشید

محسن واژدی
شنبه 14 بهمن 1391, 11:26 صبح
سلام علیکم
کد روال پست زیر هم بررسی کنید:
http://barnamenevis.org/showthread.php?326570-%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF%D9%86-%D8%B9%DA%A9%D8%B3-%DA%A9%D9%86%D8%A7%D8%B1-%DA%AF%D8%B2%D9%8A%D9%86%D9%87-%D9%87%D8%A7%DB%8C-%D9%85%D9%86%D9%88&p=1435738&viewfull=1#post1435738

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

موفق باشید
موفق باشید