ModifyMenuA, fonction (winuser.h)

Modifie un élément de menu existant. Cette fonction est utilisée pour spécifier le contenu, l’apparence et le comportement de l’élément de menu.

Note La fonction ModifyMenu a été remplacée par la fonction SetMenuItemInfo . Toutefois, vous pouvez toujours utiliser ModifyMenu si vous n’avez besoin d’aucune des fonctionnalités étendues de SetMenuItemInfo.
 

Syntaxe

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

Paramètres

[in] hMnu

Type : HMENU

Handle du menu à modifier.

[in] uPosition

Type : UINT

Élément de menu à modifier, tel que déterminé par le paramètre uFlags .

[in] uFlags

Type : UINT

Contrôle l’interprétation du paramètre uPosition et le contenu, l’apparence et le comportement de l’élément de menu. Ce paramètre doit inclure l’une des valeurs requises suivantes.

Valeur Signification
MF_BYCOMMAND
0x000000000L
Indique que le paramètre uPosition donne l’identificateur de l’élément de menu. L’indicateur MF_BYCOMMAND est la valeur par défaut si ni l’indicateur MF_BYCOMMAND ni MF_BYPOSITION n’est spécifié.
MF_BYPOSITION
0x000000400L
Indique que le paramètre uPosition donne la position relative de base zéro de l’élément de menu.
 

Le paramètre doit également inclure au moins une des valeurs suivantes.

Valeur Signification
MF_BITMAP
0x00000004L
Utilise une bitmap comme élément de menu. Le paramètre lpNewItem contient un handle pour la bitmap.
MF_CHECKED
0x00000008L
Places une marque de case activée en regard de l’élément. Si votre application fournit des bitmaps de marque case activée (voir la fonction SetMenuItemBitmaps), cet indicateur affiche une image bitmap sélectionnée en regard de l’élément de menu.
MF_DISABLED
0x00000002L
Désactive l’élément de menu afin qu’il ne puisse pas être sélectionné, mais cet indicateur ne le grise pas.
MF_ENABLED
0x000000000L
Active l’élément de menu afin qu’il puisse être sélectionné et le restaure à partir de son état grisé.
MF_GRAYED
0x00000001L
Désactive l’élément de menu et le grise afin qu’il ne puisse pas être sélectionné.
MF_MENUBARBREAK
0x000000020L
Fonctionne comme l’indicateur MF_MENUBREAK pour une barre de menus. Pour un menu déroulant, un sous-menu ou un menu contextuel, la nouvelle colonne est séparée de l’ancienne colonne par une ligne verticale.
MF_MENUBREAK
0x000000040L
Places l’élément sur une nouvelle ligne (pour les barres de menus) ou dans une nouvelle colonne (pour un menu déroulant, un sous-menu ou un menu contextuel) sans séparer les colonnes.
MF_OWNERDRAW
0x00000100L
Spécifie que l’élément est un élément dessiné par le propriétaire. Avant que le menu ne s’affiche pour la première fois, la fenêtre qui possède le menu reçoit un message WM_MEASUREITEM pour récupérer la largeur et la hauteur de l’élément de menu. Le message WM_DRAWITEM est ensuite envoyé à la procédure de fenêtre de la fenêtre propriétaire chaque fois que l’apparence de l’élément de menu doit être mise à jour.
MF_POPUP
0x00000010L
Spécifie que l’élément de menu ouvre un menu déroulant ou un sous-menu. Le paramètre uIDNewItem spécifie un handle dans le menu déroulant ou le sous-menu. Cet indicateur permet d’ajouter un nom de menu à une barre de menus ou un élément de menu qui ouvre un sous-menu à un menu déroulant, un sous-menu ou un menu contextuel.
MF_SEPARATOR
0x00000800L
Dessine une ligne de division horizontale. Cet indicateur est utilisé uniquement dans un menu déroulant, un sous-menu ou un menu contextuel. La ligne ne peut pas être grisée, désactivée ou mise en surbrillance. Les paramètres lpNewItem et uIDNewItem sont ignorés.
MF_STRING
0x000000000L
Spécifie que l’élément de menu est une chaîne de texte ; le paramètre lpNewItem est un pointeur vers la chaîne.
MF_UNCHECKED
0x000000000L
Ne place pas de marque case activée en regard de l’élément (valeur par défaut). Si votre application fournit des bitmaps case activée-mark (voir la fonction SetMenuItemBitmaps), cet indicateur affiche une image bitmap claire en regard de l’élément de menu.

[in] uIDNewItem

Type : UINT_PTR

Identificateur de l’élément de menu modifié ou, si le paramètre uFlags a l’indicateur MF_POPUP défini, un handle vers le menu déroulant ou le sous-menu.

[in, optional] lpNewItem

Type : LPCTSTR

Contenu de l’élément de menu modifié. L’interprétation de ce paramètre varie selon que le paramètre uFlags inclut l’indicateur MF_BITMAP, MF_OWNERDRAW ou MF_STRING .

Valeur Signification
MF_BITMAP
0x00000004L
Un handle bitmap.
MF_OWNERDRAW
0x00000100L
Valeur fournie par une application qui est utilisée pour gérer des données supplémentaires liées à l’élément de menu. La valeur se trouve dans le membre itemData de la structure pointée vers le paramètre lParam du WM_MEASUREITEM ou WM_DRAWITEM messages envoyés lors de la création de l’élément de menu ou de la mise à jour de son apparence.
MF_STRING
0x000000000L
Pointeur vers une chaîne terminée par null (valeur par défaut).

Valeur retournée

Type : BOOL

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Si ModifyMenu remplace un élément de menu qui ouvre un menu déroulant ou un sous-menu déroulant, la fonction détruit l’ancien menu déroulant ou sous-menu et libère la mémoire utilisée par celui-ci.

Pour que les raccourcis clavier fonctionnent avec des éléments de menu bitmap ou dessinés par le propriétaire, le propriétaire du menu doit traiter le message WM_MENUCHAR . Pour plus d’informations, consultez Menus dessinés par le propriétaire et message WM_MENUCHAR .

L’application doit appeler la fonction DrawMenuBar chaque fois qu’un menu change, que le menu se trouve dans une fenêtre affichée. Pour modifier les attributs des éléments de menu existants, il est beaucoup plus rapide d’utiliser les fonctions CheckMenuItem et EnableMenuItem .

Les groupes d’indicateurs suivants ne peuvent pas être utilisés ensemble :

  • MF_BYCOMMAND et MF_BYPOSITION
  • MF_DISABLED, MF_ENABLED et MF_GRAYED
  • MF_BITMAP, MF_STRING, MF_OWNERDRAW et MF_SEPARATOR
  • MF_MENUBARBREAK et MF_MENUBREAK
  • MF_CHECKED et MF_UNCHECKED

Exemples

Pour obtenir un exemple, consultez Définition de polices pour Menu-Item chaînes de texte.

Notes

L’en-tête winuser.h définit ModifyMenu comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-menu-l1-1-3 (introduit dans Windows 10, version 10.0.14393)

Voir aussi

AppendMenu

CheckMenuItem

Conceptuel

DrawMenuBar

EnableMenuItem

Menus

Référence

SetMenuItemBitmaps

SetMenuItemInfo