共用方式為


GetMenuState 函式 (winuser.h)

擷取與指定之功能表項相關聯的功能表旗標。 如果功能表項開啟子功能表,此函式也會傳回子功能表中的項目數。

注意GetMenuItemInfo 已取代 GetMenuState 函式。 不過,如果您不需要 GetMenuItemInfo 的任何擴充功能,您仍然可以使用 GetMenuState
 

語法

UINT GetMenuState(
  [in] HMENU hMenu,
  [in] UINT  uId,
  [in] UINT  uFlags
);

參數

[in] hMenu

類型: HMENU

功能表的句柄,其中包含要擷取其旗標的功能表項。

[in] uId

類型: UINT

要擷取功能表旗標的功能表項,由 uFlags 參數決定。

[in] uFlags

類型: UINT

指出如何解譯 uId 參數。 此參數可以是下列其中一個值。

意義
MF_BYCOMMAND
0x00000000L
表示 uId 參數會提供功能表項的識別碼。 如果未指定MF_BYCOMMAND或MF_BYPOSITION旗標,MF_BYCOMMAND旗標是預設值。
MF_BYPOSITION
0x00000400L
表示 uId 參數會提供功能表項之以零起始的相對位置。

傳回值

類型: UINT

如果指定的專案不存在,傳回值為 -1。

如果功能表項開啟子功能表,則傳回值的低序位元組包含與專案相關聯的功能表旗標,而高序位元組則包含專案所開啟之子功能表中的項目數。

否則,傳回值為功能表旗標 (位 OR) 遮罩。 以下是與功能表項相關聯的功能表旗標。

傳回碼/值 Description
MF_CHECKED
0x00000008L
下拉式功能表、子功能表和快捷功能表的專案 (旁邊只會放置複選標記) 。
MF_DISABLED
0x00000002L
項目已停用。
MF_GRAYED
0x00000001L
專案已停用並呈現灰色。
MF_HILITE
0x00000080L
專案會反白顯示。
MF_MENUBARBREAK
0x00000020L
這與 MF_MENUBREAK 旗標相同,但下拉功能表、子功能表和快捷功能表除外,其中新數據行會以垂直線分隔舊數據行。
MF_MENUBREAK
0x00000040L
此專案會放在功能表欄的新行 () 或下拉式) 選單、子功能表和快捷功能表 (的新數據行 (,而不分隔數據行。
MF_OWNERDRAW
0x00000100L
專案是以擁有者繪製。
MF_POPUP
0x00000010L
功能表項是子功能表。
MF_SEPARATOR
0x00000800L
下拉功能表、子功能表和快捷功能表只有) 的水準分隔線 (。

備註

可以測試專案是否有旗標值為 MF_ENABLEDMF_STRINGMF_UNCHECKEDMF_UNHILITE。 不過,因為這些值等於零,所以您必須使用表達式來測試這些值。

旗標 要測試旗標的表達式
MF_ENABLED ! (Flag&(MF_DISABLED | MF_GRAYED))
MF_STRING ! (Flag&(MF_BITMAP | MF_OWNERDRAW))
MF_UNCHECKED ! (Flag&MF_CHECKED)
MF_UNHILITE ! (Flag&HILITE)
 

範例

如需範例,請參閱 模擬功能表中的複選框

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-menu-l1-1-2 (Windows 10 10.0.10240 版)

另請參閱

概念

GetMenu

GetMenuItemCount

GetMenuItemID

GetMenuItemInfo

功能表

參考