Colabora
 

Menús con Mapa de bits

Usando API y Visual Basic 6.0

 

Fecha: 24/Sep/2007 (18-07-07)
Autor: Pedro Espinoza - peterpastel@Hotmail.com - pedropablo.espinoza@gmail.com

Nota del Guille: Perdón por la tardanza en la publicación, pero se me 'traspapeló' la colaboración y no la he visto hasta hoy.

 


Introducción

Encontré una manera de poner menús con imágenes mapa de bits (*.bmp) y cree una función mas especifica en poner imágenes usando algunas funciones del sistema, aproveche bien este código.

Contenido 1

Como puedo explicar, los menús y submenús tienen una ID, a través de las ID se ubica de tal manera que encuentra una posición de poner la imagen en dimensiones de 13x13, las ID comienzan desde 0 En adelante, y es según el ordenen que hayan sido puestas.

La función trabaja con funciones que piden el hWnd, o sea, la clase, formulario u objeto qe controla los menús. Además piden las ID de los menús y submenús a cuales le quieres poner las imágenes.

Nota:
Es recomendable ocupar una clase u objeto "ImageList" ya que se necesita filtrar colores en caso de dar algún color transparente, y el "ImageList" lo hace no muy aparatoso.

El código:

El código aun se está desarrollando, por lo cual no esta muy completo.

Option Explicit

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 GetMenuItemID Lib "user32" ( _
    ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" ( _
    ByVal hMenu As Long, ByVal nPosition As Long, _
    ByVal wFlags As Long, ByVal wIDNewItem As Long, _
    ByVal lpString As String) 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


Public Sub AddBitmapsMenu(ByVal Form As Form, _
                          ByVal MenuID As Integer, _
                          ByVal SubMenu As Integer, _
                          ByVal BitmapUnchecked As Long, _
                          Optional ByVal BitmapChecked As Long)

On Error Resume Next

Dim hMenu, hSubMenu, hMenuID, x

hMenu = GetMenu(Form.hWnd)
hSubMenu = GetSubMenu(hMenu, MenuID)
hMenuID = GetMenuItemID(hSubMenu, SubMenu)
x = SetMenuItemBitmaps(hMenu, hMenuID, 0, BitmapUnchecked, BitmapChecked)
  
End Sub

 

 


Código de ejemplo (comprimido):

 

Fichero con el código de ejemplo: peterpastel_Menus_con_Mapa_de_bits.zip - 4.08 KB

(MD5 checksum: 68B28F51739C0CF1FDCDAFA338AFB553)

 


Ir al índice principal de el Guille