Guide e Tutorials:indexed
La funzione SetMenuItemInfo (Tutorial completo)

Questa volta vediamo come modificare le voci del menu già esistenti. Ad esempio si potrebbe pensare di modificarne lo stato da Checked ad Unchecked, oppure di aggiungere "manualmente" una bitmap ad un menu e cose di questo genere. Le possibilità sono infatti pressochè infinite (sempre rimanendo nei limiti dei possibili stati che possono assumere e dei possibili tipi di oggetto in cui possono trasformarsi gli oggetti-menu. Per una descrizione di tali stati ed oggetti vedere la lezione MENUITEMINFO
La funzione SetMenuItemInfo è supportata praticamente da tutti i sistemi operativi: Windows 95, 98, 2000, NT 4.0 o successiva e CE.
Ultima nozione prima della consueta dichiarazione dell'API è il fatto che la funzione ritorna un valore diverso da zero in caso di successo. Nel caso opposto, se cioè si verificano problemi (ad esempio si è indicato un valore identificatore del menu non corrispondente a quello reale del menu nel quale è compreso l'oggetto-menu che si vuole modificare), il valore restituito da SetMenuItemInfo corrisponderà proprio a 0.
Come già è accaduto in occasione dell'articolo riguardante la funzione DESTROYMENU ricordiamo che per poter capire quale valore ritorna la funzione, basterà scrivere:

Dim RetVal As Long
RetVal = NomeFunzione (parametro1, parametro2,...parametron)
MsgBox RetVal

dove come al solito RetVal è la variabile alla quale si assegna il valore che la funzione restituisce.
Adesso è arrivato il momento della dichiarazione della funzione SetMenuItemInfo:

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

Anche questa volta potremo agilmente fare qualche considerazione sulla funzione sotto esame. Il fatto che sia scritto Alias "SetMenuItemInfoA" indica che l'API SetMenuItemInfo è presente nella DLL User32 in modo non univoco, ossia non solamente nella sua versione ANSI ma anche la versione Unicode. Inoltre la funzione ha bisogno di ricevere ben quattro parametri non opzionali: hMenu, uItem, lpmii e fByPosition.
Vediamo dunque in dettaglio i parametri implicati nella dichiarazione:

hMenu E' l'indicatore del menu che include la voce che si vuole modificare. Per individuare l'identificatore di un particolare menu bisogna richiamare la funzione GETMENU oppure la funzione GETSYSTEMMENU
uItem Identifica l'oggetto-menu da modificare. uItem può indicare o la posizione dell'oggetto-menu all'interno del menu o il valore che identifica l'oggetto-menu stesso.La cosa dipende da come si è impostato il parametro fByPosition.
fByPosition Se è un valore diverso da zero allora uItem identifica la posizione dell'oggetto-menu in questione (ricordando che la prima voce del menu ha posizione 0, la seconda 1 e così via. Se invece il parametro fByPosition è uguale a 0, uItem è il numero che identifica in modo univoco l'oggetto-menu.
lpmii Descrive i cambiamenti che devono essere applicati all'oggetto-menu. Come già detto in precedenza, per prendere visione dell'elenco degli stati e degli oggetti disponibili, fare riferimento alla lezione MENUITEMINFO




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