捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
1 2017.07

ModifyMenu

点击次数:1347 更新时间:2017-7-1 21:34:57  【打印此页

原文链接 -> 传送门

函数功能:

修改已存在的菜单项。修改已存在的菜单项。该函数指定菜单项的内容,外观和行为。

注意: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 参数的具体取值如下。

1. uFlags 参数必须包含下列值中的一个:

含义

MF_BYCOMMAND
(0x00000000L)

1. 表示 uPosition 参数表示的是菜单项的 ID
2. 当 MF_BYCOMMAND 和 MF_BYPOSITION 都没有指定时,MF_BYCOMMAND 标识是默认值

MF_BYPOSITION
(0x00000400L)

表示 uPosition 参数表示的是菜单项的从零计数的位置


2. uFlags 参数必须至少包含下列值中的一个:

含义

MF_BITMAP
(0x00000004L)

使用一个位图作为菜单项。lpNewItem 参数包含该位图的句柄

MF_CHECKED
(0x00000008L)

1. 菜单项后显示选中标识
2. 如果你的应用程序支持选中标记位图(查看 SetMenuItemBitmaps 函数),该标识将在菜单项后显示一个选中标记位图

MF_DISABLED
(0x00000002L)

菜单项失效,所以无法被选中但是并没有灰化

MF_ENABLED
(0x00000000L)

菜单项生效,所以可以被选中并且从灰化状态恢复

MF_GRAYED
(0x00000001L)

菜单项失效并灰化,所以无法被选中

MF_MENUBARBREAK
(0x00000020L)

1. 功能与 MF_MENUBREAK 标识对菜单栏操作相同
2. 对于一个下拉菜单,子菜单或快捷菜单,将会用一条竖线分为新旧两列

MF_MENUBREAK
(0x00000040L)

菜单项移动到新的一行(对于菜单栏)或者新的一列(对于下拉菜单,子菜单或快捷菜单)而没有竖分隔线

MF_OWNERDRAW
(0x00000100L)

指定菜单项为自绘制菜单项。菜单第一次显示之前,菜单所在的窗口会收到一个 WM_MEASUREITEM 消息来获取菜单项的宽和高。无论什么时候菜单项外观需要刷新时,菜单所在窗口都会收到一个 WM_DRAWITEM 消息

MF_POPUP
(0x00000010L)

1. 指定该菜单项打开一个下拉菜单或子菜单
2. uIDNewItem 参数指定下拉菜单或子菜单的句柄
3. 该标识用于给打开下拉菜单,子菜单或快捷菜单等类型子菜单的菜单栏或菜单项添加一个菜单名

MF_SEPARATOR
(0x00000800L)

1. 绘制一条水平分割线
2. 该标识仅用于下拉菜单,子菜单或快捷菜单
3. 该线不能被灰化、无效或高亮。
4. lpNewItem 和 uIDNewItem 参数被忽略

MF_STRING
(0x00000000L)

指定菜单项是一个文本字符串。lpNewItem 参数指向该字符串

MF_UNCHECKED
(0x00000000L)

菜单项后不添加选中标记(默认)。如果你的应用程序提供选中标记位图(查看 SetMenuItemBitmaps 函数),该标识将清除菜单项后的选中标记位图

uIDNewItem

1. 指定被修改菜单项的标识符
2. 当 uFlags 参数设置为 MF_POPUP 时,则是指定下拉式菜单或子菜单的句柄

lpNewItem

指定被修改菜单项的内容。其含义依赖于 uFlags 参数是否包含 MF_BITMAP,MF_OWNERDRAW 或 MF_STRING 标志。如下所示:

参数

含义

MF_BITMAP
(0x00000004L)

指向位图句柄

MF_OWNERDRAW
(0x00000100L)

1. 指定应用程序提供的菜单项相关的附加数据
2. 当菜单项被创建或外观需要更新时,将会收到 WM_MEASUREITEM 或WM_DRAWITEM 消息,lParam 参数中包含的结构体结构中 itemData 成员即保存该值

MF_STRING
(0x00000000L)

空字符结尾的字符串指针(默认值)



返回值:

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)

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1347 更新时间:2017-7-1 21:34:57  【打印此页

上一条:InsertMenu

下一条:InsertMenuItem

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修