Guide e Tutorials:indexed |
La struttura MenuItemInfo
Comincia con la struttura MenuItemInfo la serie di guide relative all'utilizzo dei
menu in Visual Basic.
Tale struttura è fondamentale in quanto viene utilizzata per funzioni basilari
come ad esempio GetMenuItemInfo, InsertMenuItem, SetMenuItemInfo.
Essa viene ampiamente utilizzata dal sistema in quanto contiene al suo interno una
serie di informazioni, le medesime informazioni che andiamo ad impostare nel momento
in cui, in fase di progettazione, creiamo un menu, e che l'utente modifica utilzzando in
vari modi il menu stesso. Ad esempio, nel caso in cui volessimo che una voce del menu
sia contrassegnata da un segno di spunta, creando il menu, selezioneremmo la casella
Checked. MenuItemInfo allora acquisirà tra tutte le informazioni relative al menu,
anche quella che riguarda quella singola voce, memorizzando il suo stato 'spuntato'.
Allo stesso modo, ma in una fase successiva (ossia quando il programma è compilato
ed è stato avviato), l'utente che selezionerà la voce che abbiamo spuntato in fase di progettazione
dirà a MenuItemInfo che lo stato di quella voce deve passare da 'spuntato' a 'non spuntato'.
Vediamo di procedere con ordine visualizzando prima di tutto come si compone la
struttura di MenuItemInfo:
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
|
Adesso, come al solito, andiamo a vedere uno per uno i parametri della struttura:
cbSize |
indica le dimensioni
della struttura, calcolate naturalmente in bytes.
|
fMask |
E' la combinazione dei
seguenti sottoparametri (i cosiddetti flags) che indicano quale parte della
struttura utilizzare e quindi come utilizzare la struttura stessa.
Qualsiasi parametro che non sia specificato a sua volta da un
flag sarà automaticamente ignorato:
MIIM_STATE relativo al parametro cbSize
MIIM_ID relativo al parametro wID
MIIM_SUBMENU relativo al parametro hSubMenu
MIIM_CHECKMARKS relativo ai parametri hbmpChecked e hbmpUnchecked
MIIM_DATA relativo al parametro dwItemData
MIIM_TYPE relativo ai parametri dwTypeData e cch
|
fType |
E' la combinazione dei
seguenti sottoparametri (il cui nome rimane sempre flags) che indicano
la tipologia degli oggetti-menu (ossia degli oggetti di cui il menu si può comporre:
immagini, segni di spunta, separatori, testo...) descritta da MenuItemInfo:
MFT_BITMAP: il menu viene visualizzato utilizzando delle immagini bitmap.
dwTypeData allora sarà il contesto univoco (l'identificatore) della bitmap da
utilizzare a tale scopo mentre cch di cui parleremo qui sotto verrà ignorato.
Questo flag non può mai essere combinato con MFT_SEPARATOR o MFT_STRING
per ovvi problemi di incompatibilità nella visualizzazione del menu.
MFT_MENUBARBREAK: inserisce un separatore tra due voci. Tale separatore verrà
inserito in una nuova riga se lo si mette in un menu a discesa, ad esempio:
Files
...Nuovo
...Apri
...-
In questo caso "-" viene generato da MFT_MENUBARBREAK sulla terza riga del menu a discesa.
Se invece si lavora con più colonne, cominciare una nuova colonna con il separatore significa
dividere le due colonne del menu con una barra verticale.
MFT_MENUBREAK: simile a MFT_MENUBARBREAK, tranne per la funzione
di disegnare la barra verticale se si lavora con menu multicolonne (funzione di cui
MFT_MENUBREAK non è provvisto)
MFT_OWNERDRAW: rende il menu "owner-drawn" ossia disegnabile (impostabile) dalla
finestra che lo ospita, la quale si prende la responsabilità di fare tutto lei.
MFT_RADIOCHECK: posiziona un OptionButton al posto del segno di spunta alla sinistra
della voce selezionata all'interno di un menu.
Questo vuol dire avere un oggetto-menu di tipo "radio button".
MFT_RIGHTJUSTIFY: giustifica a destra l'oggetto-menu (un testo, un'immagine...) e tutti
gli altri oggetti che vengono dopo di esso.
MFT_RIGHTORDER: il menu si aprirà da destra a sinistra
MFT_SEPARATOR: l'oggetto-menu è una barra separatrice. dwTypeData e cch verranno ignorati,
inoltre MFT_SEPARATOR non può mai essere combinato con MFT_BITMAP e/o MFT_STRING.
MFT_STRING: l'oggetto-menu è rappresentato da una stringa di testo. Non può mai essere combinato con
MFT_BITMAP e/o MFT_SEPARATOR.
|
fState |
E' la combinazione
dei seguenti sottoparametri che determinano lo stato degli oggetti-menu:
MFS_CHECKED: l'oggetto-menu è selezionato attraverso il classico segno di
spunta o l'OptionButton
MFS_DEFAULT: l'oggetto-menu è l'oggetto di default del menu (ossia quello
preimpostato)
MFS_DISABLED: l'oggetto-menu è disabilitato e l'utente non può selezionarlo o deselezionarlo
MFS_ENABLED: l'oggetto-menu è abilitato alla selezione/deselezione da parte dell'utente
MFS_GRAYED: l'oggetto-menu ha colore grigio e l'utente non lo può selezionare/deselezionare
MFS_HILITE: l'oggetto-menu è evidenziato
MFS_UNCHECKED: l'oggetto-menu non è selezionato dal segno di spunta o dall'OptionButton
MFS_UNHILITE: l'oggetto-menu non è evidenziato
|
wID |
E' l'identificatore a 16 bit del menu
|
|
hSubMenu |
E' l'identificatore del sottomenu
che si apre quando una voce del menu è selezionata
|
hbmpChecked |
E' l'identificatore della bitmap
quando l'oggetto-menu è selezionato
|
hbmpUnchecked |
E' l'identificatore della bitmap nel caso in cui l'oggetto-menu è deselezionato
|
dwItemData |
Informazione non usata
da Windows
|
dwTypeData |
se fType contiene
MFT_STRING, questa è la stringa di testo che sarà mostrata nella voce del menu,
se fType contiene MFT_BITMAP, è la bitmap da utilizzare.
|
cch |
Se dwTypeData è
una stringa di testo, questo sarà il numero di caratteri contenuto in tale stringa.
|