Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
La funzione GetMenuItemInfo (Tutorial completo)
La prima funzione che andiamo a studiare, relativamente allo sviluppo di menu sempre più completi è GetMenuItemInfo. Come si riesce facilmente ad apprendere dalla denominazione di tale funzione, GetMenuItemInfo recupera le informazioni relative ad un menu o ad un oggetto-menu, ossia come abbiamo visto nella lezione relativa alla struttura MenuItemInfo, a qualsiasi oggetto che compone il menu: stringhe di testo, immagini bitmap, OptionButton e così via. Recuperando la lezione precedente, possiamo affermare che tutte le informazioni acquisite dai menu sulla struttura e la composizione del menu stesso, sono determinate dai sottoparametri contenuti da fMask all'interno della struttura MenuItemInfo e vengono passate al sistema come parametro lpmii. Tutto questo sarà comunque esposto in maniera più comprensibile nel corso della lezione. Aggiungiamo solamente che nel caso la funzione abbia un risultato positivo, il valore di ritorno sarà diverso da zero. In caso contrario evidentemente il valore ritornato sarà proprio zero.
Vediamo adesso la dichiarazione della funzione:

Declare Function GetMenuItemInfo Lib "user32.dll" Alias "GetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPosition As Long, lpmii _
As MENUITEMINFO) As Long

Naturalmente sarà inutile avere in un progetto una dichiarazione simile se non si impone anche la struttura a cui fa riferimento, nella fattispecie MENUITEMINFO
Aperto allora il solito modulo .bas, inseriamo sia la dichiarazione MenuItemInfo sia la struttura di cui abbiamo parlato la scorsa volta. Ecco quindi come apparirà il modulo:

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
Declare Function GetMenuItemInfo Lib "user32.dll" Alias "GetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPosition As Long, lpmii _
As MENUITEMINFO) As Long

Una cosa importantissima da tenere a mente è che, come spiegato per MENUITEMINFO, non indicare le costanti dei flags significa non utilizzare parti della struttura. Se infatti volessimo riservarci la possibilità di determinare se una voce del menu è contrassegnata o meno dal segno di spunta o dall'OptionButton, bisognerà dichiarare la costante relativa al sottoparametro MFS_CHECKED. Così se volessimo determinare successivamente lo stato di una particolare voce del menu, dovremo dichiarare come pubblica la costante relativa a MIIM_STATE.
Ecco allora come apparirebbe il modulo:

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

Public Const MIIM_STATE = &H1
Public Const MFS_CHECKED = &H8

Declare Function GetMenuItemInfo Lib "user32.dll" Alias "GetMenuItemInfoA" _
(ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPosition As Long, lpmii _
As MENUITEMINFO) As Long

Apriamo adesso una piccola parentesi tanto per riposarci un po': le piattaforme che supportano la funzione MenuItemInfo sono Windows95, Windows98, Windows2000, Windows NT versione 4.0 o superiore, Windows CE versione 1.0 o superiore.
Fatta questa piccola pausa di cui nessuno avrà tratto grande giovamento, ritorniamo alla lezione vera e propria, andando ad elencare tutti i parametri della funzione.

hMenu E' l'indicatore del menu che contiene l'oggetto-menu relativamente al quale si vogliono trarre le informazioni
uItem Identifica il particolare oggetto-menu dal quale prendere le informazioni. uItem può indicare una posizione, la posizione occupata dall'oggetto-menu, oppure l'identificatore del menu-oggetto: la cosa dipende da fByPosition.
fByPosition Se questo è un valore diverso da zero uItem individua un particolare oggetto-menu in base alla posizione (0 il primo, 1 il secondo e così via..). Nel caso in cui fByPosition sia proprio zero allora uItem è l'identificatore univoco dell'oggetto-menu.
lpmii Riceve le informazioni relative al menu. Prima di chiamare la funzione GetMenuItemInfo i membri cbSize e fMask della struttura MENUITEMINFO devono essere inizializzati in modo tale da specificare quale tipo di informazione ricevere dall'oggetto-menu. Ad esempio se una voce del menu è composta da un testo, i membri cbSize e fMask devono indicare che le informazioni apprese provengono proprio da una stringa di testo e non ad esempio da una bitmap


La prossima volta vedremo un bell'esempietto che ci permette di ricavare tutte le informazioni relative ad un determinato menu. Perchè la prossima volta e non ora? Semplicemente perchè prima si dovranno introdurre altri concetti basilari, come la funzione GetMenu e la funzione GetMenuItemCount.


...alla prossima, quindi!

Archivio:
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it