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