CMenu::GetMenuItemInfo
メニュー項目に関する情報を取得します。
BOOL GetMenuItemInfo(
UINT uItem,
LPMENUITEMINFO lpMenuItemInfo,
BOOL fByPos = FALSE
);
パラメーター
uItem
情報を取得するメニュー項目の識別子または位置。 どの内容を示すかは、ByPos の値に依存します。lpMenuItemInfo
メニュー情報が格納されている MENUITEMINFO へのポインター。この構造体については、Windows SDK を参照してください。fByPos
nIDItem の示す内容を指定する値。 既定では、ByPos は FALSE になり、uItem がメニュー項目の識別子になります。 それ以外の場合は、メニュー項目の位置になります。
戻り値
成功した場合は、0 以外の値を返します。 関数が失敗したときは、戻り値はゼロです。 拡張エラー情報を取得するには、Win32 の関数 GetLastError を呼び出します。詳細については、Windows SDK を参照してください。
解説
このメンバー関数は、Windows SDK に記述されている Win32 関数 GetMenuItemInfo の動作を実装します。 GetMenuItemInfo の MFC 実装では、メニューへのハンドルを使用しません。
使用例
// CMainFrame::OnToggleTestMenuInfo() is a menu command handler for
// "Toggle Info" menu item (whose resource id is ID_MENU_TOGGLEINFO). It
// toggles the checked or unchecked state of the "Toggle Info" menu item.
// CMainFrame is a CFrameWnd-derived class.
void CMainFrame::OnToggleTestMenuItemInfo()
{
// Get the popup menu which contains the "Toggle Info" menu item.
CMenu* mmenu = GetMenu();
CMenu* submenu = mmenu->GetSubMenu(4);
// Check the state of the "Toggle Info" menu item. Check the menu item
// if it is currently unchecked. Otherwise, uncheck the menu item
// if it is not currently checked.
MENUITEMINFO info;
info.cbSize = sizeof (MENUITEMINFO); // must fill up this field
info.fMask = MIIM_STATE; // get the state of the menu item
VERIFY(submenu->GetMenuItemInfo(ID_MENU_TOGGLEINFO, &info));
if (info.fState & MF_CHECKED)
submenu->CheckMenuItem(ID_MENU_TOGGLEINFO, MF_UNCHECKED | MF_BYCOMMAND);
else
submenu->CheckMenuItem(ID_MENU_TOGGLEINFO, MF_CHECKED | MF_BYCOMMAND);
}
必要条件
**ヘッダー:**afxwin.h