GetMenuState, fonction (winuser.h)

Récupère les indicateurs de menu associés à l’élément de menu spécifié. Si l’élément de menu ouvre un sous-menu, cette fonction retourne également le nombre d’éléments dans le sous-menu.

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

Syntaxe

UINT GetMenuState(
  [in] HMENU hMenu,
  [in] UINT  uId,
  [in] UINT  uFlags
);

Paramètres

[in] hMenu

Type : HMENU

Handle du menu qui contient l’élément de menu dont les indicateurs doivent être récupérés.

[in] uId

Type : UINT

Élément de menu pour lequel les indicateurs de menu doivent être récupérés, comme déterminé par le paramètre uFlags .

[in] uFlags

Type : UINT

Indique comment le paramètre uId est interprété. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
MF_BYCOMMAND
0x00000000L
Indique que le paramètre uId 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
0x00000400L
Indique que le paramètre uId donne la position relative de base zéro de l’élément de menu.

Valeur retournée

Type : UINT

Si l’élément spécifié n’existe pas, la valeur de retour est -1.

Si l’élément de menu ouvre un sous-menu, l’octet d’ordre inférieur de la valeur de retour contient les indicateurs de menu associés à l’élément, et l’octet d’ordre supérieur contient le nombre d’éléments dans le sous-menu ouvert par l’élément.

Sinon, la valeur de retour est un masque (OR au niveau du bit) des indicateurs de menu. Voici les indicateurs de menu associés à l’élément de menu.

Code/valeur de retour Description
MF_CHECKED
0x00000008L
Une marque case activée est placée en regard de l’élément (pour les menus déroulants, les sous-menus et les menus contextuels uniquement).
MF_DISABLED
0x00000002L
L’élément est désactivé.
MF_GRAYED
0x00000001L
L’élément est désactivé et grisé.
MF_HILITE
0x00000080L
L’élément est mis en surbrillance.
MF_MENUBARBREAK
0x00000020L
Il s’agit de l’indicateur MF_MENUBREAK , à l’exception des menus déroulants, des sous-menus et des menus contextuels, où la nouvelle colonne est séparée de l’ancienne colonne par une ligne verticale.
MF_MENUBREAK
0x00000040L
L’élément est placé sur une nouvelle ligne (pour les barres de menus) ou dans une nouvelle colonne (pour les menus déroulants, les sous-menus et les menus contextuels) sans séparer les colonnes.
MF_OWNERDRAW
0x00000100L
L’élément est dessiné par le propriétaire.
MF_POPUP
0x00000010L
L’élément de menu est un sous-menu.
MF_SEPARATOR
0x00000800L
Il existe une ligne de séparation horizontale (pour les menus déroulants, les sous-menus et les menus contextuels uniquement).

Remarques

Il est possible de tester un élément pour une valeur d’indicateur de MF_ENABLED, MF_STRING, MF_UNCHECKED ou MF_UNHILITE. Toutefois, étant donné que ces valeurs correspondent à zéro, vous devez utiliser une expression pour les tester.

Indicateur Expression à tester pour l’indicateur
MF_ENABLED ! (Flag&(MF_DISABLED | MF_GRAYED))
MF_STRING ! (Flag&(MF_BITMAP | MF_OWNERDRAW))
MF_UNCHECKED ! (Flag&MF_CHECKED)
MF_UNHILITE ! (Flag&HILITE)
 

Exemples

Pour obtenir un exemple, consultez Simulation de cases à cocher dans un menu.

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-2 (introduit dans Windows 10, version 10.0.10240)

Voir aussi

Conceptuel

GetMenu

GetMenuItemCount

GetMenuItemID

GetMenuItemInfo

Menus

Référence