Condividi tramite


Funzione ModifyMenuA (winuser.h)

Modifica una voce di menu esistente. Questa funzione viene usata per specificare il contenuto, l'aspetto e il comportamento della voce di menu.

Nota La funzione ModifyMenu è stata sostituita dalla funzione SetMenuItemInfo . È comunque possibile usare ModifyMenu, tuttavia, se non sono necessarie funzionalità estese di SetMenuItemInfo.
 

Sintassi

BOOL ModifyMenuA(
  [in]           HMENU    hMnu,
  [in]           UINT     uPosition,
  [in]           UINT     uFlags,
  [in]           UINT_PTR uIDNewItem,
  [in, optional] LPCSTR   lpNewItem
);

Parametri

[in] hMnu

Tipo: HMENU

Handle del menu da modificare.

[in] uPosition

Tipo: UINT

Voce di menu da modificare, come determinato dal parametro uFlags.

[in] uFlags

Tipo: UINT

Controlla l'interpretazione del parametro uPosition e il contenuto, l'aspetto e il comportamento della voce di menu. Questo parametro deve includere uno dei valori obbligatori seguenti.

Valore Significato
MF_BYCOMMAND
0x00000000L
Indica che il parametro uPosition fornisce l'identificatore della voce di menu. Il flag MF_BYCOMMAND è l'impostazione predefinita se non viene specificato né il flag MF_BYCOMMANDMF_BYPOSITION.
MF_BYPOSITION
0x00000400L
Indica che il parametro uPosition assegna la posizione relativa in base zero della voce di menu.
 

Il parametro deve includere anche almeno uno dei valori seguenti.

Valore Significato
MF_BITMAP
0x00000004L
Usa una bitmap come voce di menu. Il parametro lpNewItem contiene un handle per la bitmap.
MF_CHECKED
0x00000008L
Posiziona un segno di spunta accanto all'elemento. Se l'applicazione fornisce bitmap con segno di spunta (vedere la funzione SetMenuItemBitmaps), questo flag visualizza una bitmap selezionata accanto alla voce di menu.
MF_DISABLED
0x00000002L
Disabilita la voce di menu in modo che non possa essere selezionata, ma questo flag non lo grigio.
MF_ENABLED
0x00000000L
Abilita la voce di menu in modo che possa essere selezionata e ripristinata dal relativo stato disattivato.
MF_GRAYED
0x00000001L
Disabilita la voce di menu e la grigia in modo che non possa essere selezionata.
MF_MENUBARBREAK
0x00000020L
Funziona come il flag di MF_MENUBREAK per una barra dei menu. Per un menu a discesa, un sottomenu o un menu di scelta rapida, la nuova colonna è separata dalla colonna precedente in base a una linea verticale.
MF_MENUBREAK
0x00000040L
Inserisce l'elemento in una nuova riga (per le barre dei menu) o in una nuova colonna (per un menu a discesa, un sottomenu o un menu di scelta rapida) senza separare le colonne.
MF_OWNERDRAW
0x00000100L
Specifica che l'elemento è un elemento disegnato dal proprietario. Prima che il menu venga visualizzato per la prima volta, la finestra proprietaria del menu riceve un messaggio WM_MEASUREITEM per recuperare la larghezza e l'altezza della voce di menu. Il messaggio WM_DRAWITEM viene quindi inviato alla routine della finestra del proprietario ogni volta che è necessario aggiornare l'aspetto della voce di menu.
MF_POPUP
0x00000010L
Specifica che la voce di menu apre un menu a discesa o un sottomenu. Il parametro uIDNewItem specifica un handle per il menu a discesa o il sottomenu. Questo flag viene usato per aggiungere un nome di menu a una barra dei menu o a una voce di menu che apre un sottomenu a un menu a discesa, un sottomenu o un menu di scelta rapida.
MF_SEPARATOR
0x00000800L
Disegna una linea di divisione orizzontale. Questo flag viene usato solo in un menu a discesa, in un sottomenu o in un menu di scelta rapida. La riga non può essere disattivata, disabilitata o evidenziata. I parametri lpNewItem e uIDNewItem vengono ignorati.
MF_STRING
0x00000000L
Specifica che la voce di menu è una stringa di testo; il parametro lpNewItem è un puntatore alla stringa.
MF_UNCHECKED
0x00000000L
Non inserisce un segno di spunta accanto all'elemento (impostazione predefinita). Se l'applicazione fornisce bitmap con segno di spunta (vedere la funzione SetMenuItemBitmaps), questo flag visualizza una bitmap chiara accanto alla voce di menu.

[in] uIDNewItem

Tipo: UINT_PTR

L'identificatore della voce di menu modificata o, se il parametro uFlags ha il flag MF_POPUP impostato, un handle per il menu a discesa o il sottomenu.

[in, optional] lpNewItem

Tipo: LPCTSTR

Contenuto della voce di menu modificata. L'interpretazione di questo parametro dipende dal fatto che il parametro uFlags includa il flag MF_BITMAP, MF_OWNERDRAWo MF_STRING.

Valore Significato
MF_BITMAP
0x00000004L
Handle bitmap.
MF_OWNERDRAW
0x00000100L
Valore fornito da un'applicazione utilizzata per mantenere dati aggiuntivi correlati alla voce di menu. Il valore si trova nel membro itemData della struttura a cui punta il parametro lParam del WM_MEASUREITEM o WM_DRAWITEM messaggi inviati quando la voce di menu viene creata o ne viene aggiornata l'aspetto.
MF_STRING
0x00000000L
Puntatore a una stringa con terminazione Null (impostazione predefinita).

Valore restituito

Tipo: bool

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

Se ModifyMenu sostituisce una voce di menu che apre un menu a discesa o un sottomenu, la funzione elimina definitivamente il menu a discesa o il sottomenu precedente e libera la memoria utilizzata.

Affinché gli acceleratori di tastiera funzionino con le voci di menu bitmap o create dal proprietario, il proprietario del menu deve elaborare il messaggio WM_MENUCHAR. Per altre informazioni, vedere Owner-Drawn Menu e WM_MENUCHAR Message.

L'applicazione deve chiamare la funzione DrawMenuBar ogni volta che viene modificato un menu, indipendentemente dal fatto che il menu si trova in una finestra visualizzata. Per modificare gli attributi delle voci di menu esistenti, è molto più veloce usare le funzioni di CheckMenuItem e EnableMenuItem.

Non è possibile utilizzare insieme i gruppi di flag seguenti:

  • MF_BYCOMMAND e MF_BYPOSITION
  • MF_DISABLED, MF_ENABLEDe MF_GRAYED
  • MF_BITMAP, MF_STRING, MF_OWNERDRAWe MF_SEPARATOR
  • MF_MENUBARBREAK e MF_MENUBREAK
  • MF_CHECKED e MF_UNCHECKED

Esempi

Per un esempio, vedere impostazione dei tipi di carattere per Menu-Item stringhe di testo.

Nota

L'intestazione winuser.h definisce ModifyMenu come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione winuser.h (include Windows.h)
libreria User32.lib
dll User32.dll
set di API ext-ms-win-ntuser-menu-l1-1-3 (introdotto in Windows 10, versione 10.0.14393)

Vedere anche

AppendMenu

CheckMenuItem

concettuale

DrawMenuBar

EnableMenuItem

menu

riferimento

SetMenuItemBitmaps

SetMenuItemInfo