Esta va de menus ;)

Gracias de todos modos.
Como se pueden insetar imagenes a la izquierda del caption de los menus?

1 respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas