CMenu::GetMenuState
Retourne l'état de l'élément de menu spécifié ou le nombre d'éléments dans un menu contextuel.
UINT GetMenuState(
UINT nID,
UINT nFlags
) const;
Paramètres
nID
Spécifie l'ID d'élément de menu, tel que déterminé par nFlags.nFlags
Spécifie la nature de nID. Il peut être l'une des valeurs suivantes :MF_BYCOMMAND spécifie que le paramètre permet l'ID de commande de l'élément de menu existant. Valeur par défaut.
MF_BYPOSITION spécifie que le paramètre permet la position de l'élément de menu existant. Le premier élément est à la position 0.
Valeur de retour
La valeur 0xFFFFFFFF si l'élément spécifié n'existe pas. Si le nId identifie un menu contextuel, l'octet de poids fort contient le nombre d'éléments dans le menu contextuel et l'octet de poids faible contient les balises de menu associé au menu contextuel. Sinon la valeur de retour est un caractère générique (OR booléen) des valeurs de la liste suivante (ce masque décrit l'état de l'élément de menu que le nId identifie) :
MF_CHECKED agit comme toggle avec MF_UNCHECKED pour définir la coche par défaut en regard de l'élément. Lorsque l'application fournit des bitmaps de coche (consultez la fonction membre d' SetMenuItemBitmaps ), « coche sur » la bitmap s'affiche.
MF_DISABLED désactive l'élément de menu afin qu'il ne puisse pas être sélectionné mais ne l'estompe pas.
MF_ENABLED active l'élément de menu afin qu'il puisse être sélectionnée et les restaure il de son état grisé. Notez que la valeur de la constante est 0 ; une application ne doit pas déterminer à 0 de l'échec lors de l'utilisation de cette valeur.
MF_GRAYED désactive l'élément de menu afin qu'il ne puisse pas être sélectionné et l'estompe.
MF_MENUBARBREAK définit l'élément sur une nouvelle ligne dans les menus statiques ou dans une nouvelle colonne dans les menus contextuels. La nouvelle colonne de menu contextuel est séparée de la colonne ancienne par une ligne de séparation verticale.
MF_MENUBREAK définit l'élément sur une nouvelle ligne dans les menus statiques ou dans une nouvelle colonne dans les menus contextuels. Aucune ligne de séparation n'est définie entre les colonnes.
MF_SEPARATOR dessine une ligne de séparation horizontale. Peut être utilisé dans un menu contextuel. Cette ligne ne peut pas être estompée, désactivée, ou en surbrillance. d'autres paramètres sont ignorés.
MF_UNCHECKED agit comme toggle avec MF_CHECKED pour supprimer une coche en regard de l'élément. Lorsque l'application fournit des bitmaps de coche (consultez la fonction membre d' SetMenuItemBitmaps ), « coche off » de la bitmap s'affiche. Notez que la valeur de la constante est 0 ; une application ne doit pas déterminer à 0 de l'échec lors de l'utilisation de cette valeur.
Exemple
// CMainFrame::OnToggleTestMenuState() is a menu command handler for
// "Toggle State" menu item (whose resource id is ID_MENU_TOGGLESTATE).
// It toggles the checked or unchecked state of the "Toggle State" menu item.
// CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnToggleTestMenuState()
{
// Get the popup menu which contains the "Toggle State" menu item.
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(4);
// Check the state of the "Toggle State" menu item. Check the menu item
// if it is currently unchecked. Otherwise, uncheck the menu item
// if it is not currently checked.
UINT state = submenu->GetMenuState(ID_MENU_TOGGLESTATE, MF_BYCOMMAND);
ASSERT(state != 0xFFFFFFFF);
if (state & MF_CHECKED)
submenu->CheckMenuItem(ID_MENU_TOGGLESTATE, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_MENU_TOGGLESTATE, MF_CHECKED | MF_BYCOMMAND);
}
Configuration requise
Header: afxwin.h