InsertMenu功能将一个新的菜单项插入菜单,将其他项目向下移动到菜单中。
InsertMenuItem功能已被InsertMenuItem功能取代。但是,如果您不需要InsertMenuItem的任何扩展功能,您仍然可以使用InsertMenu.
BOOL InsertMenu(
HMENU 【HMENU】, | //菜单的句柄 |
UINT 【uPositionbs】, | //新菜单项前面的菜单项 |
UINT 【uFlags】, | //菜单项标志 |
UINT 【uIDNewItem】, | //菜单项标识符或下拉菜单或子菜单的句柄 |
LPCTSTR 【lpNewItem】 | //菜单项内容 |
); |
参数
【HMENU】
标识要更改的菜单。
【uPositionbs】
指定由【uFlags】参数确定的要插入新菜单项的菜单项。
【uFlags】
指定控制【uPositionbs】参数的解释以及新菜单项的内容,外观和行为的标志。此参数必须是以下必需值之一的组合,以及以下备注部分中列出的至少一个值。
值 | 描述 |
MF_BYCOMMAND | 表示【uPositionbs】参数给出菜单项的标识符。如果没有指定MF_BYCOMMAND或MF_BYPOSITION标志,MF_BYCOMMAND标志是默认标志。 |
MF_BYPOSITION | 表示【uPositionbs】参数给出了新菜单项的基于零的相对位置。如果【uPositionbs】为0xFFFFFFFF,则新菜单项将附加到菜单的末尾。 |
【uIDNewItem】
指定新菜单项的标识符,或者如果【uFlags】参数设置了MF_POPUP标志,则为下拉菜单或子菜单的句柄。
【lpNewItem】
指定新菜单项的内容。【lpNewItem】的解释取决于【uFlags】参数是否包含MF_BITMAP,MF_OWNERDRAW或MF_STRING标志,如下所示:
值 | 描述 |
MF_BITMAP | 包含一个位图句柄。 |
MF_OWNERDRAW | 包含应用程序提供的32位值,可用于维护与菜单项相关的附加数据。该值在创建菜单项或其外观更新时发送的WM_MEASUREITEM或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_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
也可以看看
AppendMenu, DeleteMenu, DrawMenuBar, InsertMenuItem, ModifyMenu, RemoveMenu, SetMenuItemBitmaps, WM_DRAWITEM, WM_MEASUREITEM