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 參數。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
表示 uId 參數會提供功能表項的識別碼。 如果未指定MF_BYCOMMAND或MF_BYPOSITION旗標,則MF_BYCOMMAND旗標是預設值。 |
|
表示 uId 參數會提供功能表項之以零起始的相對位置。 |
傳回值
類型: UINT
如果指定的專案不存在,傳回值為 -1。
如果功能表項開啟子功能表,則傳回值的低序位元組包含與專案相關聯的功能表旗標,而高序位元組則包含專案所開啟之子功能表中的項目數。
否則,傳回值為功能表旗標 (位 OR) 遮罩。 以下是與功能表項相關聯的功能表旗標。
傳回碼/值 | Description |
---|---|
|
下拉式功能表、子功能表和快捷功能表的專案 (旁邊只會放置複選標記) 。 |
|
項目已停用。 |
|
專案已停用並呈現灰色。 |
|
專案會反白顯示。 |
|
這與 MF_MENUBREAK 旗標相同,但下拉功能表、子功能表和快捷功能表除外,其中新數據行會以垂直線分隔舊數據行。 |
|
此專案會放在功能表欄的新行 () 或下拉式) 選單、子功能表和快捷功能表 (的新數據行 (,而不分隔數據行。 |
|
專案是以擁有者繪製。 |
|
功能表項是子功能表。 |
|
下拉功能表、子功能表和快捷功能表只有) 的水準分隔線 (。 |
備註
可以測試專案是否有旗標值為 MF_ENABLED、 MF_STRING、 MF_UNCHECKED 或 MF_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 版) |
另請參閱
概念
參考