ModifyMenu功能可以更改现有的菜单项。此函数用于指定菜单项的内容,外观和行为。
SetMenuItemInfo功能已被SetMenuItemInfo功能取代。但是,如果您不需要SetMenuItemInfo的任何扩展功能,您仍然可以使用ModifyMenu.
BOOL ModifyMenu(
HMENU 【的编程实例bs】, | //菜单的句柄 |
UINT 【uPositionbs】, | //要修改的菜单项 |
UINT 【uFlags】, | //菜单项标志 |
UINT 【uIDNewItem】, | //菜单项标识符或下拉菜单或子菜单的句柄 |
LPCTSTR 【lpNewItem】 | //菜单项内容 |
); |
参数
【的编程实例bs】
标识要更改的菜单。
【uPositionbs】
指定要更改的菜单项,由【uFlags】参数确定。
【uFlags】
指定控制【uPositionbs】参数的解释以及菜单项的内容,外观和行为的标志。此参数必须是以下必需值之一的组合,以及以下备注部分中列出的至少一个值。
值 | 含义 |
MF_BYCOMMAND | 表示【uPositionbs】参数给出菜单项的标识符。如果没有指定MF_BYCOMMAND或MF_BYPOSITION标志,MF_BYCOMMAND标志是默认标志。 |
MF_BYPOSITION | 表示【uPositionbs】参数给出菜单项的基于零的相对位置。 |
【uIDNewItem】
指定修改菜单项的标识符,或者如果【uFlags】参数设置了MF_POPUP标志,则为下拉菜单或子菜单的句柄。
【lpNewItem】
指向更改的菜单项的内容。该参数的解释取决于【uFlags】参数是否包含MF_BITMAP,MF_OWNERDRAW或MF_STRING标志。
值 | 含义 |
MF_BITMAP | 包含一个位图句柄。 |
MF_OWNERDRAW | 包含由应用程序提供的32位值,用于维护与菜单项相关的附加数据。该值位于创建菜单项或其外观更新时发送的WM_MEASUREITEM或WM_DRAWITEM消息的【LPARAM】参数所指向的结构的【的ItemData】成员中。 |
MF_STRING | 包含一个指向空终止字符串的指针(默认值)。 |
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
如果ModifyMenu替换打开下拉菜单或子菜单的菜单项,则该函数会破坏旧的下拉菜单或子菜单,并释放其使用的内存。
无论菜单是否在显示的窗口中,应用程序必须在菜单更改时调用DrawMenuBar功能。要更改现有菜单项的属性,使用CheckMenuItem和EnableMenuItem功能要快得多。
以下列表描述了可在【uFlags】参数中设置的标志:
值 | 含义 |
MF_BITMAP | 使用位图作为菜单项。【lpNewItem】参数包含位图的句柄。 |
MF_BYCOMMAND | 表示【uPositionbs】参数指定菜单项的标识符(默认值)。 |
MF_BYPOSITION | 表示【uPositionbs】参数指定新菜单项的基于零的相对位置。 |
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, CheckMenuItem, DrawMenuBar, EnableMenuItem, SetMenuItemBitmaps, SetMenuItemInfo, WM_DRAWITEM, WM_MEASUREITEM