Iconos en un Menu

Iniciado por ElectroSPAIDER, 11 Febrero 2008, 01:43 AM

0 Miembros y 1 Visitante están viendo este tema.

ElectroSPAIDER

Hola, buenas tardes. Escribo porque hay un tema al que no soy capaz de encontrar solución y que me está llevando muchos quebraderos de cabeza. Resulta que he coneguido insertar iconos y .bmp en un menú mediante esta subrutina:

'API's
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

Const MF_BYPOSITION = &H400&

'Procedimiento
Private Sub SetMenuIcon()
     Dim mHandle As Long, lRet As Long, sHandle As Long
     mHandle = GetMenu(hwnd)
     sHandle = GetSubMenu(mHandle, 3)
     lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, Image1.Picture, Image1.Picture)
     lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, Image1.Picture,  Image1.Picture)
     lRet = SetMenuItemBitmaps(sHandle, 3, MF_BYPOSITION, Image1.Picture, Image1.Picture)
     lRet = SetMenuItemBitmaps(sHandle, 4, MF_BYPOSITION, Image1.Picture, Image1.Picture)
End Sub



Image1.Picture contiene un .bmp de 16x16 píxeles, como es común encontrar en los menús de muchos programas (estilo Word, el PopUp de estados de Windows Live Messenger, etc), pero resulta que los menús SÓLO aceptan bitmaps o iconos de 13x13 píxeles, que no es un formato estándar y que además me frustra una idea que tenía.

Hay alguna forma de solventarlo?

PD: Sí, sé que hay controles como SmartMenuXP que admiten iconos y bitmaps de tamaños estándar y facilitan mucho el trabajo con menús... pero me interesa utilizar menús nativos de VB6.

PD2: Muchas gracias por adelantado!!

ElectroSPAIDER

Recalco que es muy conveniente que mi aplicación no depenga de ningún OCX externo. He visto soluciones como crear menús a partir de formularios o listboxes, pero NINGUNA se asemeja ni por asomo a los menús nativos de VB6. Más que nada mi pregunta es si existe alguna forma de forzar que los menús acepten iconos 16x16 (y me consta que sí se tiene que poder, si no fijaos en eso: )



El menú es clásico pero los iconos son 16x16. ESO es justamente lo que necesito, alguien conoce alguna forma de lograrlo?

cassiani


~~

CitarHe visto soluciones como crear menús a partir de formularios o listboxes, pero NINGUNA se asemeja ni por asomo a los menús nativos de VB6

Por lo q se ve el no kiere nada de eso (a mi tampoco me gusta...). Si kieres usar el api, yo por lo meno no e tenido mas remedio q ir pasando los iconos a 13x13, pero vamos q tampoco es traumatico hacerlo xD

Lo malo de este metodo es en los menus popup, q no se ven los iconos y tienes q andar haciendo apaños, pero weno, asi es vb  :¬¬