ModifyMenuA 函式 (winuser.h)
變更現有的功能表項。 此函式可用來指定功能表項的內容、外觀和行為。
語法
BOOL ModifyMenuA(
[in] HMENU hMnu,
[in] UINT uPosition,
[in] UINT uFlags,
[in] UINT_PTR uIDNewItem,
[in, optional] LPCSTR lpNewItem
);
參數
[in] hMnu
類型: HMENU
要變更之功能表的句柄。
[in] uPosition
類型: UINT
要變更的功能表項,如 uFlags 參數所決定。
[in] uFlags
類型: UINT
控制 uPosition 參數的解譯,以及功能表項的內容、外觀和行為。 此參數必須包含下列其中一個必要值。
值 | 意義 |
---|---|
|
表示 uPosition 參數會提供功能表項的識別碼。 如果未指定MF_BYCOMMAND或MF_BYPOSITION旗標,則MF_BYCOMMAND旗標是預設值。 |
|
指出 uPosition 參數會提供功能表項之以零起始的相對位置。 |
參數也必須至少包含下列其中一個值。
值 | 意義 |
---|---|
|
使用點陣圖做為功能表項。 lpNewItem 參數包含位圖的句柄。 |
|
Places 專案旁的複選標記。 如果您的應用程式提供複選標記點圖 (看到 SetMenuItemBitmaps 函式) ,此旗標會顯示功能表項旁的選取位圖。 |
|
停用功能表項,使其無法選取,但此旗標不會呈現灰色。 |
|
啟用功能表項,以便從其灰色狀態加以選取並還原。 |
|
停用功能表項並呈現灰色,使其無法選取。 |
|
與功能表欄 的MF_MENUBREAK 旗標相同。 對於下拉功能表、子功能表或快捷方式功能表,新數據行會以垂直線分隔舊數據行。 |
|
Places 功能表欄的新行 (專案) 或下拉功能表、子功能表或快捷功能表 (的新數據行) ,而不分隔數據行。 |
|
指定專案是擁有者繪製的專案。 第一次顯示功能表之前,擁有功能表的視窗會收到 WM_MEASUREITEM 訊息,以擷取功能表項的寬度和高度。 每當必須更新功能表項的外觀時,就會將 WM_DRAWITEM 訊息傳送至擁有者視窗的視窗程式。 |
|
指定功能表項會開啟下拉功能表或子功能表。 uIDNewItem 參數會指定下拉功能表或子功能表的句柄。 此旗標可用來將功能表名稱新增至功能表欄,或開啟子功能表至下拉功能表、子功能表或快捷方式功能表的功能表項。 |
|
繪製水準分隔線。 此旗標僅用於下拉功能表、子功能表或快捷方式功能表。 行不能呈現灰色、停用或反白顯示。 系統會忽略 lpNewItem 和 uIDNewItem 參數。 |
|
指定功能表項為文字字串; lpNewItem 參數是字串的指標。 |
|
不會在專案旁邊放置複選標記, (預設) 。 如果您的應用程式提供複選標記點圖 (看到 SetMenuItemBitmaps 函式) ,此旗標會顯示功能表項旁的清除位圖。 |
[in] uIDNewItem
類型: UINT_PTR
已修改功能表項的標識碼;如果 uFlags 參數已設定 MF_POPUP 旗標,則為下拉功能表或子功能表的句柄。
[in, optional] lpNewItem
類型: LPCTSTR
已變更功能表項的內容。 此參數的解譯取決於 uFlags 參數是否包含 MF_BITMAP、 MF_OWNERDRAW或 MF_STRING 旗標。
值 | 意義 |
---|---|
|
點陣圖句柄。 |
|
應用程式所提供的值,用來維護與功能表項相關的其他數據。 此值位於結構中的 itemData 成員中,由建立功能表項或更新功能表項時所傳送之WM_MEASUREITEM或WM_DRAWITEM訊息的 lParam 參數所指向的結構。 |
|
null 終止字串的指標 (預設) 。 |
傳回值
類型: BOOL
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
如果 ModifyMenu 取代開啟下拉功能表或子功能表的功能表項,函式會終結舊的下拉功能表或子功能表,並釋放它所使用的記憶體。
若要讓鍵盤快捷鍵使用位圖或擁有者繪製的功能表項,功能表的擁有者必須處理 WM_MENUCHAR 訊息。 如需詳細資訊,請參閱 擁有者繪製的功能表和WM_MENUCHAR訊息 。
每當功能表變更時,應用程式都必須呼叫 DrawMenuBar 函式,無論功能表是否在顯示的視窗中。 若要變更現有功能表項的屬性,使用 CheckMenuItem 和 EnableMenuItem 函式會更快。
下列旗標群組不能一起使用:
- MF_BYCOMMAND 和 MF_BYPOSITION
- MF_DISABLED、 MF_ENABLED和 MF_GRAYED
- MF_BITMAP、 MF_STRING、 MF_OWNERDRAW和 MF_SEPARATOR
- MF_MENUBARBREAK 和 MF_MENUBREAK
- MF_CHECKED 和 MF_UNCHECKED
範例
如需範例,請參閱 設定 Menu-Item 文字字串的字型。
注意
winuser.h 標頭會將ModifyMenu定義為別名,根據UNICODE預處理器常數的定義,自動選取此函式的ANSI或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包括 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |
API 集合 | ext-ms-win-ntuser-menu-l1-1-3 (於 Windows 10 10.0.14393 版) |
另請參閱
概念
參考