AppendMenuA 函式 (winuser.h)

將新專案附加至指定的功能表列結尾、下拉式功能表、子功能表或快捷方式功能表。 您可以使用此函式來指定功能表項目的內容、外觀和行為。

語法

BOOL AppendMenuA(
  [in]           HMENU    hMenu,
  [in]           UINT     uFlags,
  [in]           UINT_PTR uIDNewItem,
  [in, optional] LPCSTR   lpNewItem
);

參數

[in] hMenu

類型: HMENU

要變更之功能表列、下拉式功能表、子功能表或快捷方式功能表的控制碼。

[in] uFlags

類型: UINT

控制新功能表項目的外觀和行為。 此參數可以是下列值的組合。

意義
MF_BITMAP
0x00000004L
使用點陣圖做為功能表項目。 lpNewItem參數包含點陣圖的控制碼。
MF_CHECKED
0x00000008L
將核取記號放在功能表項目旁邊。 如果應用程式提供核取記號點陣圖 (請參閱 SetMenuItemBitmaps,此旗標會顯示功能表項目旁的核取記號點陣圖。
MF_DISABLED
0x00000002L
停用功能表項目,使其無法選取,但旗標不會呈現灰色。
MF_ENABLED
0x00000000L
啟用功能表項目,使其可以選取,並從其灰色狀態還原。
MF_GRAYED
0x00000001L
停用功能表項目並呈現灰色,使其無法選取。
MF_MENUBARBREAK
0x00000020L
與功能表列 的MF_MENUBREAK 旗標相同。 對於下拉式功能表、子功能表或快捷方式功能表,新資料行會以垂直線分隔舊資料行。
MF_MENUBREAK
0x00000040L
將專案放在功能表列的新行 () ,或在下拉式功能表、子功能表或快捷方式) 功能表 (的新資料行 (中,而不分隔資料行。
MF_OWNERDRAW
0x00000100L
指定專案是擁有者繪製的專案。 第一次顯示功能表之前,擁有功能表的視窗會收到 WM_MEASUREITEM 訊息,以擷取功能表項目的寬度和高度。 每當必須更新功能表項目的外觀時,就會將 WM_DRAWITEM 訊息傳送至擁有者視窗的視窗程式。
MF_POPUP
0x00000010L
指定功能表項目會開啟下拉式功能表或子功能表。 uIDNewItem參數會指定下拉式功能表或子功能表的控制碼。 此旗標可用來將功能表名稱新增至功能表列,或開啟子功能表至下拉式功能表、子功能表或快捷方式功能表的功能表項目。
MF_SEPARATOR
0x00000800L
繪製水準分隔線。 此旗標僅用於下拉式功能表、子功能表或快捷方式功能表。 行不能呈現灰色、停用或反白顯示。 系統會忽略 lpNewItemuIDNewItem參數。
MF_STRING
0x00000000L
指定功能表項目為文字字串; lpNewItem 參數是字串的指標。
MF_UNCHECKED
0x00000000L
不會在專案旁邊放置核取記號, (預設) 。 如果應用程式提供核取記號點陣圖 (請參閱 SetMenuItemBitmaps) ,此旗標會顯示功能表項目旁的清除點陣圖。

[in] uIDNewItem

類型: UINT_PTR

新功能表項目的識別碼;如果 uFlags 參數設定為 MF_POPUP,則為下拉式功能表或子功能表的控制碼。

[in, optional] lpNewItem

類型: LPCTSTR

新功能表項目的內容。 lpNewItem的解譯取決於uFlags參數是否包含下列值。

意義
MF_BITMAP
0x00000004L
包含點陣圖控制碼。
MF_OWNERDRAW
0x00000100L
包含應用程式提供的值,可用來維護與功能表項目相關的其他資料。 值位於結構中的 itemData成員中,由建立功能表或更新功能表時所傳送之WM_MEASUREITEMWM_DRAWITEM訊息的lParam參數所指向的結構。
MF_STRING
0x00000000L
包含 Null 終止字串的指標。

傳回值

類型: BOOL

如果函式成功,則傳回非零的值。 如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

每當功能表變更時,應用程式都必須呼叫 DrawMenuBar 函式,無論功能表是否在顯示的視窗中。

若要讓鍵盤快速鍵使用點陣圖或擁有者繪製功能表項目,功能表的擁有者必須處理 WM_MENUCHAR 訊息。 如需詳細資訊,請參閱 擁有者繪製的功能表和WM_MENUCHAR訊息

下列旗標群組無法一起使用:

  • MF_BITMAPMF_STRINGMF_OWNERDRAW
  • MF_CHECKEDMF_UNCHECKED
  • MF_DISABLEDMF_ENABLEDMF_GRAYED
  • MF_MENUBARBREAKMF_MENUBREAK

範例

如需範例,請參閱 將線條和圖形新增至功能表

注意

winuser.h 標頭會將 AppendMenu 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

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

另請參閱

概念

CreateMenu

DeleteMenu

DestroyMenu

DrawMenuBar

InsertMenu

InsertMenuItem

功能表

ModifyMenu

參考

RemoveMenu

SetMenuItemBitmaps