次の方法で共有


CMenu::GetMenuItemInfo

更新 : 2007 年 11 月

メニュー項目に関する情報を取得します。

BOOL GetMenuItemInfo(
   UINT uItem,
   LPMENUITEMINFO lpMenuItemInfo,
   BOOL fByPos = FALSE 
);

パラメータ

  • uItem
    情報を取得するメニュー項目の識別子または位置。どの内容を示すかは、ByPos の値に依存します。

  • lpMenuItemInfo
    メニュー情報が格納されている MENUITEMINFO へのポインタ。この構造体については、Windows SDK を参照してください。

  • fByPos
    nIDItem の示す内容を指定する値。既定では、ByPos は FALSE になり、uItem がメニュー項目の識別子になります。それ以外の場合は、メニュー項目の位置になります。

戻り値

成功した場合は、0 以外の値を返します。失敗した場合は、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

参照

参照

CMenu クラス

階層図

CWnd::GetMenu

CMenu::GetMenuItemCount

CMenu::GetMenuItemID

その他の技術情報

CMenu のメンバ