次の方法で共有


CMenu::GetMenuState

更新 : 2007 年 11 月

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

UINT GetMenuState(
   UINT nID,
   UINT nFlags 
) const;

パラメータ

  • nID
    nFlags で指定される方法でメニュー項目 ID を指定します。

  • nFlags
    nID の性質を指定します。次のいずれかの値を指定できます。

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

    • MF_BYPOSITION   パラメータで既存のメニュー項目の位置を指定することを示します。最初の項目位置は 0 です。

戻り値

指定された項目が存在しない場合は 0xFFFFFFFF を返します。nId がポップアップ メニューを示す場合は、上位バイトにはポップアップ メニューの項目数が設定され、下位バイトにはポップアップ メニューに指定されているメニュー フラグが設定されます。それ以外の場合は、次に示されている値のマスク (論理 OR) を返します。このマスクは、nId で識別されるメニュー項目の状態を示します。

  • MF_CHECKED   MF_UNCHECKED とトグルで動作します。既定のチェック マークを項目の隣に付けます。アプリケーションがチェック マークのビットマップを用意しているときは (「SetMenuItemBitmaps」を参照)、その "チェック マーク付き" のビットマップが表示されます。

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

  • MF_ENABLED   メニュー項目を選択できるようにして、淡色表示から元の表示に戻します。この定数の値が 0 であることに注意してください。アプリケーションでこの値を使ってエラーを調べるとき 0 と比較しないようにしてください。

  • MF_GRAYED   メニュー項目を選択できないようにして、淡色表示にします。

  • MF_MENUBARBREAK   スタティック メニューの新しい行、またはポップアップ メニューの新しい桁位置に項目を置きます。ポップアップ メニューの新しい桁位置と古い桁位置を縦線で分けます。

  • MF_MENUBREAK   スタティック メニューの新しい行、またはポップアップ メニューの新しい桁位置に項目を置きます。桁位置の間には分割線は描かれません。

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

  • MF_UNCHECKED   MF_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

その他の技術情報

CMenu のメンバ