Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
La funzione HiliteMenuItem (Tutorial completo)

Questa funzione, dobbiamo proprio ammetterlo, ha un rilievo del tutto marginale rispetto alle API legate ai menu che abbiamo visto in precendenza.
La funzione principale di HiliteMenuItem è quella di selezionare, evidenziandola, una particolare voce di un menu. La dichiarazione dell'API è piuttosto semplice e non si discosta di molto da quelle già analizzate prima d'ora:

Declare Function HiliteMenuItem Lib "user32" (ByVal hWnd As Long, _
ByVal hMenu As Long, ByVal uItemHilite As Long, ByVal uHilite _
As Long) As Long

Si tratta di un'API contenuta in user32.dll, dunque. A ciò possiamo agiungere che necessita di quattro parametri interi a 32 bit. Il valore di ritorno è allo stesso modo un Long diverso da zero se la funzione ha successo. In caso di fallimento il valore restituito dalla HiliteMenuItem sarà proprio lo zero.
Questi sono i parametri:

hWnd E' il riferimento alla finestra che contiene il menu di cui si vuole selezionare una voce
hMenu E' l'indicatore del menu che contiene la voce da selezionare
uItemHilite Specifica la voce del menu da selezionare. L'individuazione di una voce del menu dipende da quanto impostato nel parametro uHilite
uHilite Specifica come interpretare la posizione della voce del menu come indicato da uitemHilite: il parametro uHilite può deve contenere almeno un flag che identifica la posizione ed uno che identifica l'operazione:
MF_BYCOMMAND in questo caso uPosition dà il numero identificatore dalla voce del menu specificato;
MF_BYPOSITION in questo caso uPosition dà invece la posizione della voce in una numerazione che parte da 0: la prima voce del menu ha quindi indice 0, la seconda 1 e così via fino ad n voci;
MF_HILITE seleziona la voce;
MF_UNHILITE deseleziona la voce

dunque le possibilità per il parametro uHilite sono MF_BYCOMMAND o MF_BYPOSITION e MF_HILITE o MF_UNHILITE.
Facciamo un esempio. Dichiariamo la funzione con i rispettivi flags, oltre alle funzioni GetMenu e GetSubMenu:

Private Declare Function HiliteMenuItem Lib "user32" (ByVal hWnd As Long, _
ByVal hMenu As Long, ByVal uItemHilite As Long, ByVal uHilite _
As Long) As Long
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 Const MF_BYPOSITION = &H400
Private Const MF_BYCOMMAND = &H0
Private Const MF_HILITE = &H80
Private Const MF_UNHILITE = &H0

Notare che anche le costanti dei membri della struttura MENUITEMINFO sono già stati ampiamente trattati.
Adesso vediamo il codice per l'evento Load di Form1. Sapendo che il primo parametro è Form1.hWnd, bisognerà lavorare maggiormente sul secondo parametro: l'indicatore del menu (o meglio del sottomenu) nel quale è compresa la voce desiderata, si ricava dal menu principale...:

Private Sub Form_Load()
Menu = GetMenu(Form1.hWnd)

...indicando il sottomenu desiderato:

sMenu = GetSubMenu(Menu, 0)

In questo caso abbiamo indicato il primo sottomenu come contenente la voce che c'interessa selezionare.
Possiamo a questo punto richiamare la funzione:

HiliteMenuItem Form1.hWnd, sMenu, 0, MF_BYPOSITION Or MF_HILITE

dove abbiamo indicato con lo 0 che la voce da selezionare è la prima (avendo usato una numerazione che, data da MF_BYPOSITION parte proprio da zero) ed abbiamo utilizzato l'operazione data dal flag MF_HILITE che seleziona la voce del menu.
Riportiamo di seguito l'esempio completo:

Private Declare Function HiliteMenuItem Lib "user32" (ByVal hWnd As Long, _
ByVal hMenu As Long, ByVal uItemHilite As Long, ByVal uHilite _
As Long) As Long
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 Const MF_BYPOSITION = &H400
Private Const MF_BYCOMMAND = &H0
Private Const MF_HILITE = &H80
Private Const MF_UNHILITE = &H0
Private Sub Form_Load()
Menu = GetMenu(Form1.hWnd)
sMenu = GetSubMenu(Menu, 0)
HiliteMenuItem Form1.hWnd, sMenu, 0, MF_BYPOSITION Or MF_HILITE
End Sub


Archivio:ndexed
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