Aqui esta otro que me gusta mucho usarlo para todo tipo de aplicacion que realizo, es poder ponerle iconos a los submenus como lo hace windows en sus aplicaciones
Necesiatremos un Form, menus con sus respectivos sub menus y ImageList
Podemos empezar con insertar los iconos en nuestro ImageList,clic derecho, propiedades, en la pestaña Imagenes, y en el boton de insertar imagen vamos agregando los iconos que suelen ser pequeños y bueno de preferencia en orden respecto a nuestros menus para evitar confusiones y estar checando nuestro ImageList
Despues creamos los menus y submenus a nuestro gusto esto es solo para probra, sobre el formulario se presiona Ctrl+E y el primero en escribirse sera nuestro Menu, despues se inserta uno nuevo y para hacerlo parte de nuestro primer menu le damos clic sobre el boton con el icono de derecha para pasarlo y asi sucesivamente.
Ya que tenemos todo esto realizado en General y Declaraciones escribimos esto
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hwnd 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
Y ahora en nuestro formularion en el evento Load escribimos esto
Private Sub Form_Load()
Dim hMnu As Long, hsMnu As Long, hsMnu1 As Long, rtnValue As Long
Const MF_BYPOSITION = &H400&
hMnu = GetMenu(Me.hwnd)
hsMnu = GetSubMenu(hMnu, 0)
rtnValue = SetMenuItemBitmaps(hsMnu, 0, MF_BYPOSITION, ImageList1.ListImages.Item(1).Picture, 0)
rtnValue = SetMenuItemBitmaps(hsMnu, 1, MF_BYPOSITION, ImageList1.ListImages.Item(2).Picture, 0)
hsMnu = GetSubMenu(hMnu, 1)
rtnValue = SetMenuItemBitmaps(hsMnu, 0, MF_BYPOSITION, ImageList1.ListImages.Item(3).Picture, 0)
rtnValue = SetMenuItemBitmaps(hsMnu, 1, MF_BYPOSITION, ImageList1.ListImages.Item(4).Picture, 0)
hsMnu = GetSubMenu(hMnu, 2)
rtnValue = SetMenuItemBitmaps(hsMnu, 0, MF_BYPOSITION, ImageList1.ListImages.Item(5).Picture, 0)
rtnValue = SetMenuItemBitmaps(hsMnu, 1, MF_BYPOSITION, ImageList1.ListImages.Item(6).Picture, 0)
hsMnu = GetSubMenu(hMnu, 3)
rtnValue = SetMenuItemBitmaps(hsMnu, 0, MF_BYPOSITION, ImageList1.ListImages.Item(7).Picture, 0)
rtnValue = SetMenuItemBitmaps(hsMnu, 1, MF_BYPOSITION, ImageList1.ListImages.Item(8).Picture, 0)
rtnValue = SetMenuItemBitmaps(hsMnu, 2, MF_BYPOSITION, ImageList1.ListImages.Item(9).Picture, 0)
End Sub
Y bueno esto es todo,es una muy buena forma de darle presentacion a nuestros programas aunque para mi el problema fue conseguir los iconos pequeños y que se vieran bien jejejej
Espero les sirva y en estos dias espero poder mostrarles un commando button pero hecho por un amigo,no me adjudico el trabajo pero quiero mostrarselos porque es mucho mejor que el commandbutton de VB jejejeje