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_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