AppendMenu功能将一个新项目附加到指定的菜单栏,下拉菜单,子菜单或快捷菜单的末尾。您可以使用此函数指定菜单项的内容,外观和行为。
InsertMenuItem功能已被InsertMenuItem功能取代。但是,如果您不需要InsertMenuItem的任何扩展功能,您仍然可以使用AppendMenu.
BOOL AppendMenu(
HMENU 【HMENU】, | //处理要更改的菜单 |
UINT 【uFlags】, | //菜单项标志 |
UINT 【uIDNewItem】, | //菜单项标识符或下拉菜单或子菜单的句柄 |
LPCTSTR 【lpNewItem】 | //菜单项内容 |
); |
参数
【HMENU】
标识要更改的菜单栏,下拉菜单,子菜单或快捷菜单。
【uFlags】
指定用于控制新菜单项的外观和行为的标志。此参数可以是以下备注部分中列出的值的组合。
【uIDNewItem】
指定新菜单项的标识符,或者如果【uFlags】参数设置为MF_POPUP,则下拉菜单或子菜单的句柄。
【lpNewItem】
指定新菜单项的内容。【lpNewItem】的解释取决于【uFlags】参数是否包含MF_BITMAP,MF_OWNERDRAW或MF_STRING标志,如下所示:
值 | 描述 |
MF_BITMAP | 包含一个位图句柄。 |
MF_OWNERDRAW | 包含应用程序提供的32位值,可用于维护与菜单项相关的附加数据。该值位于创建菜单或其外观更新时发送的WM_MEASURE或WM_DRAWITEM消息的【LPARAM】参数指向的结构的的ItemData成员中。 |
MF_STRING | 包含指向空终止字符串的指针。 |
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
无论菜单是否在显示的窗口中,应用程序必须在菜单更改时调用DrawMenuBar功能。
可在【uFlags】参数中设置以下标志:
值 | 描述 |
MF_BITMAP | 使用位图作为菜单项。【lpNewItem】参数包含位图的句柄。 |
MF_CHECKED | 在菜单项旁边放一个复选标记。如果应用程序提供复选标记位图(参见SetMenuItemBitmaps),该标志将显示菜单项旁边的复选标记位图。 |
MF_DISABLED | 禁用菜单项,因此无法选择,但标志不会灰色。 |
MF_ENABLED | 启用菜单项,以便可以选择它,并将其从灰色状态恢复。 |
MF_GRAYED | 禁用菜单项并将其灰化,因此无法选择。 |
MF_MENUBARBREAK | 功能与菜单栏的MF_MENUBREAK标志相同。对于下拉菜单,子菜单或快捷菜单,新列将与旧列与垂直线分开。 |
MF_MENUBREAK | 将项目放置在新行(对于菜单栏)或新列(对于下拉菜单,子菜单或快捷菜单)而不分隔列。 |
MF_OWNERDRAW | 指定该项目是所有者绘制的项目。在第一次显示菜单之前,拥有菜单的窗口会收到WM_MEASUREITEM消息以检索菜单项的宽度和高度。每当必须更新菜单项的外观时,WM_DRAWITEM消息将被发送到所有者窗口的窗口过程。 |
MF_POPUP | 指定菜单项打开下拉菜单或子菜单。【uIDNewItem】参数指定下拉菜单或子菜单的句柄。此标志用于将菜单名称添加到菜单栏,或将菜单项添加到下拉菜单,子菜单或快捷菜单中的子菜单。 |
MF_SEPARATOR | 画一条水平分界线。此标志仅在下拉菜单,子菜单或快捷菜单中使用。该行不能为灰色,禁用或突出显示。【lpNewItem】和【uIDNewItem】参数将被忽略。 |
MF_STRING | 指定菜单项是文本字符串; 【lpNewItem】参数指向字符串。 |
MF_UNCHECKED | 不在项目旁边放置复选标记(默认)。如果应用程序提供复选标记位图(参见SetMenuItemBitmaps),此标志将显示菜单项旁边的未选中的位图。 |
以下组标志不能一起使用:
MF_DISABLED,MF_ENABLED和MF_GRAYED
* MF_BITMAP,MF_STRING和MF_OWNERDRAW
* MF_MENUBARBREAK和MF_MENUBREAK
* MF_CHECKED和MF_UNCHECKED
也可以看看
CreateMenu, DeleteMenu, DestroyMenu, DrawMenuBar, InsertMenu, InsertMenuItem, ModifyMenu, RemoveMenu, SetMenuItemBitmaps