Freigeben über


CMenu::GetMenuState

Gibt den Status des angegebenen Menüelements oder die Anzahl der Elemente in einem Popupmenü zurück.

UINT GetMenuState( 
   UINT nID, 
   UINT nFlags  
) const;

Parameter

  • nID
    Gibt die Menüelement ID an, die von nFlags bestimmt.

  • nFlags
    Gibt die Eigenschaften von nID an. Es kann einer der folgenden Werte sein:

    • MF_BYCOMMAND gibt an, dass der Parameter der Befehls-ID des vorhandenen Menüelements gibt. Dies ist die Standardeinstellung.

    • MF_BYPOSITION gibt an, dass der Parameter die Position des vorhandenen Menüelements gibt. Der erste Punkt befindet sich an Position 0.

Rückgabewert

Der Wert 0xFFFFFFFF, wenn das angegebene Element nicht vorhanden ist. Wenn nId ein Popupmenü identifiziert, enthält das signifikanteste Byte die Anzahl der Elemente im Popupmenü und das niedrigsten Wert Byte enthält die Menüflags, die mit dem Popupmenü zugeordnet werden. Andernfalls ist der Rückgabewert eine Maske (boolesch OR) der Werte in der folgenden Liste (diese Maske beschreibt den Status des Menüelements, das nId ) angegeben:

  • MF_CHECKED fungiert als eine Umschaltfläche mit MF_UNCHECKED auf, um das Häkchen neben dem Element zu platzieren. Wenn die Anwendung Prüfzeichenbitmaps (siehe die SetMenuItemBitmaps-Memberfunktion), bietet, wird das Häkchen "auf" Bitmap angezeigt.

  • MF_DISABLED deaktiviert das Menüelement, sodass es nicht ausgewählt werden kann, sondern blendet es nicht ab.

  • MF_ENABLED aktiviert das Menüelement, sodass es ausgewählt werden kann und Wiederherstellung von seinem abgeblendeten Zustand. Beachten Sie, dass der Wert dieser Konstante 0 ist; eine Anwendung sollte nicht für 0 für Fehler testen, wenn sie diesen Wert verwendet.

  • MF_GRAYED deaktiviert das Menüelement, sodass es nicht ausgewählt werden kann und blendet es ab.

  • MF_MENUBARBREAK gibt das Element auf einer neuen Zeile in statischen Menüs oder in einer neuen Spalte in den Popupmenüs. Die neue Popupmenüspalte wird aus der alten Spalte durch eine vertikale Trennlinie getrennt.

  • MF_MENUBREAK gibt das Element auf einer neuen Zeile in statischen Menüs oder in einer neuen Spalte in den Popupmenüs. Keine wird die Trennlinie zwischen Spalten platziert.

  • MF_SEPARATOR wird eine horizontale Trennlinie. Kann in einem Popupmenü nur verwendet werden. Diese Zeile kann nicht abgeblendet angezeigt werden, deaktiviert oder hervorgehoben werden. Andere Parameter werden ignoriert.

  • MF_UNCHECKED fungiert als eine Umschaltfläche mit MF_CHECKED auf, um ein Häkchen neben dem Element zu entfernen. Wenn die Anwendung Prüfzeichenbitmaps (siehe die SetMenuItemBitmaps-Memberfunktion), bietet, wird das Häkchen "weg" aus der Bitmap angezeigt. Beachten Sie, dass der Wert dieser Konstante 0 ist; eine Anwendung sollte nicht für 0 für Fehler testen, wenn sie diesen Wert verwendet.

Beispiel

// 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);
}

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CMenu-Klasse

Hierarchiediagramm

GetMenuState

CMenu::CheckMenuItem

CMenu::EnableMenuItem