CMenu::GetMenuState
傳回指定之功能表項目的狀態或項目數目的快顯功能表的。
UINT GetMenuState(
UINT nID,
UINT nFlags
) const;
參數
nID
指定功能表項目 ID,由 nFlags。nFlags
指定 nID的性質。它可以是下列其中一個值:MF_BYCOMMAND 指定參數指定現有的功能表項目的命令 ID。這是預設值。
MF_BYPOSITION 指定參數重新命名現有的功能表項目的位置。第一個項目在位置 0。
傳回值
值 0xFFFFFFFF,如果指定的項目不存在。如果 nId 識別的快顯功能表,高序位 (High Order) 位元組在快顯功能表包含的項目數目,而低序位區段包含功能表旗標與快顯功能表。否則傳回值是遮罩 (布林值) 或從下列清單中的值 (這個遮罩描述 nId 識別) 功能表項目的狀態:
MF_CHECKED 為具有 MF_UNCHECKED 的切換了項目旁邊放置預設核取記號。當應用程式提供核取記號點陣圖 (請參閱 SetMenuItemBitmaps 成員函式),則」Bitmap 「的核取記號顯示。
MF_DISABLED 停用功能表項目,讓它不能選取,但不會呈現暗灰色。
MF_ENABLED 啟用功能表項目,讓它可以選取和還原它從其暗灰色的 (Dimmed) 狀態。請注意這個常數的值是 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);
}
需求
Header: afxwin.h