Ciao, ti posto il mio tip:
Aggiungere bitmap ai menu
Un limite di VB facilmente superato, ecco come dotare i menu delle Form di bitmap...
Ecco un sistema semplice per aggiungere bitmap ai menu delle Form.
Utilizzando le funzioni API GetMenu, GetSubMenu e GetMenuItemID è possibile (come già visto in altri Tips)
ottenere gli handle del menu di una Form, di un sottomenu e il suo ID.
Con la funzione SetMenuItemBitmap, è possibile assegnare una bitmap ad un menu.
Nell'esempio si richiede di inserire sulla Form una PictureBox con proprietà Autosize impostata a True.
Questa PictureBox deve avere caricata una Bitmap (NON un'icona o cursore) con dimensioni massime di 13 x 13 pixels.
Ovviamente è necessaria la presenza di un sotto menu.
codice:
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 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_BITMAP = &H4&
'
Private Sub Command1_Click()
' Aggiunge al primo menu una Bitmap
' Occorre che Picture1 abbia Autozie=True e una bitmap (NON icona) con
' dimensioni massime 13 x 13
Dim hMenu As Long
Dim hSubMenu As Long
Dim hID As Long
hMenu = GetMenu(Me.hwnd) ' Ottiene l'handle del menu
hSubMenu = GetSubMenu(hMenu, 0) ' Ottiene l'handle del 1° SubMenu
hID = GetMenuItemID(hSubMenu, 0) ' Ottiene il MenuID della 1° voce del 1° SubMenu
' Aggiunge la bitmap
SetMenuItemBitmaps hMenu, hID&, MF_BITMAP, Picture1.Picture, Picture1.Picture
' Un'altro menu...
hID = GetMenuItemID(hSubMenu, 1) ' Ottiene il MenuID della 2° voce del 1° SubMenu
SetMenuItemBitmaps hMenu, hID&, MF_BITMAP, Picture1.Picture, Picture1.Picture
End Sub
Ciao
Simo