CMenu::AppendMenu

追加新项目到菜单的末尾。

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

参数

  • nFlags
    当被添加到菜单时,指定有关新菜单项的状态的信息。 它包括的"备注"部分中列出的一个或多个值。

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

  • lpszNewItem
    指定新菜单项的内容。 nFlags 参数用于保持解释 lpszNewItem :

    nFlags

    lpszNewItem的说明

    MF_OWNERDRAW

    包含应用程序可以使用维护其他数据与菜单项的一个由应用程序提供的32位值。 在处理 WM_MEASUREITEMWM_DRAWITEM 消息时,该32位值对应用程序本身可用。 该值在结构中 itemData 成员存储提供了这些消息。

    MF_STRING

    包含指向一个Null终止的字符串。 这是默认解释。

    MF_SEPARATOR

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

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

返回值

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

备注

应用程序可以通过设置值来指定菜单项的状态。nFlags。 当 nIDNewItem 指定弹出菜单时,它成为其追加的菜单。 如果销毁该菜单,还将在销毁追加的菜单。 应从 CMenu 对象分离一个追加的菜单避免冲突。 请注意 MF_STRINGMF_OWNERDRAWAppendMenu的位图版本无效。

以下列表描述了 nFlags能设置的标志:

  • MF_CHECKED 为与 MF_UNCHECKED 的触发器在项目旁边将默认选中标记。 当应用程序提供复选标记位图(请参见 SetMenuItemBitmaps 成员函数),在”位图的“复选标记将显示。

  • MF_UNCHECKED 为与 MF_CHECKED 的触发器在项目中移除旁边的复选标记。 当应用程序提供复选标记位图(请参见 SetMenuItemBitmaps 成员函数),“复选标记为”显示位图。

  • MF_DISABLED 禁用菜单项,使它不能选择,但不灰显它。

  • MF_ENABLED 启用菜单项,以便可以选择和还原从其灰显的状态。

  • MF_GRAYED 禁用菜单项,使它不能选择并灰显它。

  • MF_MENUBARBREAK 在新行将该项目在静态菜单上或新列在弹出菜单。 新的弹出菜单列从旧列将用竖的分隔线。

  • MF_MENUBREAK 在新行将该项目在静态菜单上或新列在弹出菜单。 分隔线不放置在列之间。

  • MF_OWNERDRAW 指定该项是所有者描述项目。 当菜单第一次时显示,拥有菜单的窗口接收 WM_MEASUREITEM 消息,检索菜单项的高度和宽度。 WM_DRAWITEM 消息是发送的控件,每当所有者必须更新菜单项的可视化外观。 此选项用于顶级菜单项无效。

  • MF_POPUP 指定菜单项都有一个弹出菜单与它。 ID参数指定句柄将与该项目关联的弹出菜单。 对于添加一个顶级弹出菜单或一个分层弹出菜单使用以弹出菜单项。

  • MF_SEPARATOR 绘制一条的分隔线。 只能在弹出菜单。 此行不能为灰色,禁用或显示。 其他参数将被忽略。

  • MF_STRING 指定菜单项是字符字符串。

以下为每个组列表互斥,不能使用的标志:

  • MF_DISABLEDMF_ENABLEDMF_GRAYED

  • MF_STRINGMF_OWNERDRAWMF_SEPARATOR和位图版本

  • MF_MENUBARBREAKMF_MENUBREAK

  • MF_CHECKEDMF_UNCHECKED

只要位于窗口更改的菜单(窗口是否显示),应用程序应调用 CWnd::DrawMenuBar

示例

CMenu::CreateMenu参见示例。

要求

Header: afxwin.h

请参见

参考

CMenu选件类

层次结构图

CWnd::DrawMenuBar

CMenu::InsertMenu

CMenu::RemoveMenu

CMenu::SetMenuItemBitmaps

CMenu::Detach

AppendMenu