CMenu::ModifyMenu

更改现有菜单项。nPosition指定的该位置。

BOOL ModifyMenu(
   UINT nPosition,
   UINT nFlags,
   UINT_PTR nIDNewItem = 0,
   LPCTSTR lpszNewItem = NULL 
);
BOOL ModifyMenu(
   UINT nPosition,
   UINT nFlags,
   UINT_PTR nIDNewItem,
   const CBitmap* pBmp 
);

参数

  • nPosition
    指定要更改的菜单项。 nFlags 参数可用于以下方式解释 nPosition :

    nFlags

    nPosition的说明

    MF_BYCOMMAND

    指定参数为现有菜单项的命令ID。 如果 MF_BYCOMMANDMF_BYPOSITION 未设置,这是默认值。

    MF_BYPOSITION

    指定参数为现有菜单项的位置。 第一项在位置0。

  • nFlags
    指定 nPosition 如何解释并提供有关将进行的更改的信息对菜单项。 有关可以设置标志的列表,请参见 AppendMenu 成员函数。

  • nIDNewItem
    指定已修改的菜单项的命令ID;或者,如果 nFlags 设置为 MF_POPUP,菜单句柄(HMENU)弹出菜单。 nIDNewItem 参数将被忽略(不需要),如果 nFlags 设置为 MF_SEPARATOR

  • lpszNewItem
    指定新菜单项的内容。 nFlags 参数可用于以下方式解释 lpszNewItem :

    nFlags

    lpszNewItem的说明

    MF_OWNERDRAW

    包含应用程序可以使用维护其他数据与菜单项的一个由应用程序提供的32位值。 在处理 MF_MEASUREITEMMF_DRAWITEM时,该32位值对应用程序本身可用。

    MF_STRING

    包含较长的指针传递一个Null终止的字符串或为 CString

    MF_SEPARATOR

    lpszNewItem 参数将被忽略(不需要)。

  • pBmp
    指向 CBitmap 将用作菜单项的对象。

返回值

非零,如果函数运行成功;否则为0。

备注

应用程序通过设置值来指定菜单项的新状态在 nFlags。 如果此功能替代一个弹出菜单与菜单项,它销毁旧弹出菜单和释放弹出菜单占用的内存。

当 nIDNewItem 指定弹出菜单时,它成为其插入的一部分的菜单。 如果销毁该菜单,还将在销毁插入的菜单。 应从 CMenu 对象分离一个插入的菜单避免冲突。

只要位于窗口更改的菜单(窗口是否显示),应用程序应调用 CWnd::DrawMenuBar。 若要更改现有菜单项属性,它是更快使用 CheckMenuItemEnableMenuItem 成员函数。

示例

CMenu::InsertMenu参见示例。

要求

Header: afxwin.h

请参见

参考

CMenu选件类

层次结构图

CMenu::AppendMenu

CMenu::InsertMenu

CMenu::CheckMenuItem

CWnd::DrawMenuBar

CMenu::EnableMenuItem

CMenu::SetMenuItemBitmaps

CMenu::Detach

ModifyMenu