La funcion mas importante es SetMenuItemBitmaps. Prueba con esto: En un modulo: Declare Function GetMenu Lib "user32" _ (ByVal hwnd As Long) As Long Declare Function GetSubMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPos As Long) As Long Declare Function GetMenuItemID Lib "user32" _ (ByVal hMenu As Long, ByVal nPos As Long) As Long 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 Public Const MF_BITMAP = &H4& Type MENUITEMINFO cbSize As Long fMask As Long fType As Long fState As Long wID As Long hSubMenu As Long hbmpChecked As Long hbmpUnchecked As Long dwItemData As Long dwTypeData As String cch As Long End Type Declare Function GetMenuItemCount Lib "user32" _ (ByVal hMenu As Long) As Long Declare Function GetMenuItemInfo Lib "user32" _ Alias "GetMenuItemInfoA" (ByVal hMenu As Long, _ ByVal un As Long, ByVal b As Boolean, _ lpMenuItemInfo As MENUITEMINFO) As Boolean Public Const MIIM_ID = &H2 Public Const MIIM_TYPE = &H10 Public Const MFT_STRING = &H0& En el Formulario: Private Sub Form_Load() hMenu& = GetMenu(Form1.hwnd) hSubMenu& = GetSubMenu(hMenu&, 0) hID& = GetMenuItemID(hSubMenu&, 0) SetMenuItemBitmaps hMenu&, hID&, MF_BITMAP, _ Picture1.Picture, _ Picture1.Picture End Sub
Acabo de probar tu ayuda, y funciona, pero q valores pueden tener los flags, es que me interesaria poder poner iconos, en vez de bitmaps. Otra cosa cuando paso por encima el color de la imagen no se mantiene, los colores se invierten, es eso normal?¿ Axias ;)
El picturebox debe tener Autosize = True y la imagen debe ser no superior a 13X13. La definicion pone: UFlags [in] Specifies how the uPosition parameter is interpreted. The uFlags parameter must be one of the following values. Value Meaning MF_BYCOMMAND Indicates that uPosition gives the identifier of the menu item. If neither MF_BYCOMMAND nor MF_BYPOSITION is specified, MF_BYCOMMAND is the default flag. MF_BYPOSITION Indicates that uPosition gives the zero-based relative position of the menu item. Las constantes deben ser: MF_BYCOMMAND &H0& MF_BYPOSITION &H4& Los 2 últimos argumentos de la funcion son para asignar una imagen cuando está presionada y otro cuando no. Para poner un icono prueba con crear un imagelist y luego extraes la imagen con el método ExtractIcon: ImageList1. ListImages(1). ExtractIcon Y lo usas en lugar de Picture1. Picture. No lo he probado, pero deberia funcionar... Salu2
Una pregunta, de dnd sacas la informacion para las apis? pq pa leerlo directamente del win32api.txt... jejejeje, hombre algo se puede hacer, xo muxungo xD
Tengo instalado el Msdn asi lo veo rapidamente. Tambien esta online : http://msdn.microsoft.com/library/ (search) Las constantes las saque de winuser. H (es que ahora estoy trabajando en C++) aunque tambien deberian estar en Visor de apis de Vstudio. Para ver una manera rápida de usar una api en VB a veces me paso por www.vbapi.com aunque no es muy completa... Salu2