ModifyMenuW, 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.
Syntaxe
BOOL ModifyMenuW(
[in] HMENU hMnu,
[in] UINT uPosition,
[in] UINT uFlags,
[in] UINT_PTR uIDNewItem,
[in, optional] LPCWSTR lpNewItem
);
Paramètres
[in] hMnu
Type : HMENU
Handle vers le 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 du contenu, de l’apparence et du comportement de l’élément de menu. Ce paramètre doit inclure l’une des valeurs requises suivantes.
Le paramètre doit également inclure au moins l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
Utilise une bitmap comme élément de menu. Le paramètre lpNewItem contient un handle vers la bitmap. |
|
Place une coche en regard de l’élément. Si votre application fournit des bitmaps de coche (voir les SetMenuItemBitmaps fonction), cet indicateur affiche une bitmap sélectionnée en regard de l’élément de menu. |
|
Désactive l’élément de menu afin qu’il ne puisse pas être sélectionné, mais cet indicateur ne le grise pas. |
|
Active l’élément de menu afin qu’il puisse être sélectionné et le restaurer à partir de son état grisé. |
|
Désactive l’élément de menu et le grise afin qu’il ne puisse pas être sélectionné. |
|
Fonctionne de la même façon que 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. |
|
Place 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. |
|
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 propriétaire du 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. |
|
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. |
|
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 |
|
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. |
|
Ne place pas de coche en regard de l’élément (valeur par défaut). Si votre application fournit des bitmaps de coche (voir les SetMenuItemBitmaps function), cet indicateur affiche une bitmap claire en regard de l’élément de menu. |
[in] uIDNewItem
Type : UINT_PTR
L’identificateur de l’élément de menu modifié ou, si le paramètre uFlags a le jeu d’indicateurs MF_POPUP, un handle du menu déroulant ou du 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
Valeur de retour
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’erreur étendues, appelez GetLastError.
Remarques
Si ModifyMenu remplace un élément de menu qui ouvre un menu déroulant ou un sous-menu, 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 accélérateurs 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 les menus Owner-Drawn et le de message WM_MENUCHAR.
L’application doit appeler la fonction DrawMenuBar chaque fois qu’un menu change, si 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
Les groupes d’indicateurs suivants ne peuvent pas être utilisés ensemble :
- MF_BYCOMMAND et MF_BYPOSITION
- MF_DISABLED, MF_ENABLEDet MF_GRAYED
- MF_BITMAP, MF_STRING, MF_OWNERDRAWet 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.
Note
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. Le mélange 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winuser.h (include 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
conceptuelle
de référence