次の方法で共有


CMenu::GetMenuState

指定されたメニュー項目のステータスまたはポップアップ メニューの項目数を返します。

UINT GetMenuState( 
   UINT nID, 
   UINT nFlags  
) const;

パラメーター

  • nID
    nFlagsによって決定されるメニュー項目 ID を指定します。

  • nFlags
    nIDの性質を指定します。 次のいずれかの値が返されます。

    • MF_BYCOMMAND は、パラメーターが既存のメニュー項目のコマンド ID を与えることを指定します。 既定値です。

    • MF_BYPOSITION は、パラメーターが既存のメニュー項目の位置を与えることを指定します。 最初の項目が 0 の位置にあります。

戻り値

指定した項目がない場合、値 0xFFFFFFFF。 nId が ポップアップ メニューを識別する場合、上位バイトはポップアップ メニューの項目数が含まれ、下位バイトはポップアップ メニューに関連付けられたメニューのフラグが含まれます。 それ以外の場合、戻り値は次の一覧から値のマスク (論理 OR) です (このマスクは nId で 識別される) メニュー項目の条件を記述します:

  • MF_CHECKEDMF_UNCHECKED のトグルとして項目の横にチェック マークの既定値を設定する機能します。 アプリケーションが一部のビットマップ ( SetMenuItemBitmaps のメンバー関数を参照) 渡す場合、ビットマップ「」のチェック マークが表示されます。

  • MF_DISABLED は、選択できない無効にしますが、淡色表示しないようにメニュー項目が。

  • MF_ENABLED は復元淡色表示の状態から選択できるようにメニュー項目を有効にします。 この定数の値が 0 であることに注意してください; アプリケーションはエラーごとに 0 に対してこの値を使用するときにテストする必要があります。

  • MF_GRAYED は、選択できない無効にし、淡色表示するようにメニュー項目が。

  • MF_MENUBARBREAK は静的メニューまたはポップアップ メニューに新しい列に改行に項目を配置します。 新しいポップアップ メニューの列は、縦の区切り線で古い列から分かれます。

  • MF_MENUBREAK は静的メニューまたはポップアップ メニューに新しい列に改行に項目を配置します。 区切り線は、列の間に設定します。

  • MF_SEPARATOR は、水平方向の区切り線を描画します。 ポップアップ メニューにのみ使用できます。 この行は淡色表示にするか、無効にするか、または強調表示できません。 他のパラメーターは無視されます。

  • MF_UNCHECKEDMF_CHECKED のトグルとして項目の横にチェック マークを削除するに機能します。 アプリケーションが一部のビットマップ ( SetMenuItemBitmaps のメンバー関数を参照) 渡す場合、ビットマップ「」にチェック マークが表示されます。 この定数の値が 0 であることに注意してください; アプリケーションはエラーごとに 0 に対してこの値を使用するときにテストする必要があります。

使用例

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

必要条件

ヘッダー: afxwin.h

参照

関連項目

CMenu クラス

階層図

GetMenuState

CMenu::CheckMenuItem

CMenu::EnableMenuItem