原文链接 -> 传送门
函数功能:
修改已存在的菜单项。修改已存在的菜单项。该函数指定菜单项的内容,外观和行为。
注意:ModifyMenu 函数已经被 SetMenuItemInfo 函数代替。如果你不需要 SetMenuItemInfo 函数的任何扩展特性,你仍然可以使用 ModifyMenu 函数。
API 函数原型:
注释:_In_ 说明该参数是输入的;_In_opt_ 说明该参数是输入的,可选的。
BOOL WINAPI ModifyMenu( _In_ HMENU hMnu, _In_ UINT uPosition, _In_ UINT uFlags, _In_ UINT_PTR uIDNewItem, _In_opt_ LPCTSTR lpNewItem );
参数解析:
|
参数 |
含义 |
||||||||||||||||||||||||||||||||
|
hMnu |
指向被修改的菜单的句柄 |
||||||||||||||||||||||||||||||||
|
uPosition |
指向被修改的菜单项,含义由 uFlags 参数决定 |
||||||||||||||||||||||||||||||||
|
uFlags |
控制 uFlags 参数的解释和菜单项的内容,外观和行为。uFlags 参数的具体取值如下。
|
||||||||||||||||||||||||||||||||
|
uIDNewItem |
1. 指定被修改菜单项的标识符 |
||||||||||||||||||||||||||||||||
|
lpNewItem |
指定被修改菜单项的内容。其含义依赖于 uFlags 参数是否包含 MF_BITMAP,MF_OWNERDRAW 或 MF_STRING 标志。如下所示:
|
返回值:
1. 如果函数调用成功,返回值为非 0;
2. 如果函数调用失败,返回值为 0。
获取有关错误的更多信息,请调用 GetLastError 函数。
备注:
1. 如果 ModifyMenu 函数替换了一个打开下拉菜单或子菜单的菜单项,函数将会销毁旧的下拉菜单或子菜单并释放所使用的内存。
2. 为了位图或自绘制菜单项可以使用快捷键,菜单所在窗口必须处理 WM_MENUCHAR 消息。查看 Owner-Drawn Menus and the WM_MENUCHAR Message 获取更多信息。
3. 当菜单改变时,程序必须调用 DrawMenuBar 函数,无论菜单是否在显示窗口中。为了改变已存在菜单项的特征,使用CheckMenuItem 函数和 EnableMenuItem 函数会更快。
4. 以下标识的组合不能同时使用:
· 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
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Winuser.h (包含于 Windows.h) |
|
Library |
User32.lib |
|
DLL |
User32.dll |
|
Unicode and ANSI names |
ModifyMenuW (Unicode) 和 ModifyMenuA (ANSI) |




