IExtendContextMenu::AddMenuItems 方法 (mmc.h)

IExtendContextMenu::AddMenuItems 方法允许管理单元将项添加到上下文菜单。

语法

HRESULT AddMenuItems(
  [in]      LPDATAOBJECT          piDataObject,
  [in]      LPCONTEXTMENUCALLBACK piCallback,
  [in, out] long                  *pInsertionAllowed
);

参数

[in] piDataObject

指向要向其添加项的菜单的数据对象上的 IDataObject 接口的指针。

[in] piCallback

指向可向上下文菜单添加项的 IContextMenuCallback 的指针。

[in, out] pInsertionAllowed

一个 值,该值标识可以使用的 MMC 定义的菜单项插入点。 这可以是以下标志的组合:

CCM_INSERTIONALLOWED_TOP

项可以插入到上下文菜单的顶部。

CCM_INSERTIONALLOWED_NEW

可以在“新建”子菜单插入项。

CCM_INSERTIONALLOWED_TASK

可以在“所有任务”子菜单插入项。

CCM_INSERTIONALLOWED_VIEW

可以在工具栏视图菜单或结果窗格上下文菜单的 “视图 ”子菜单中插入项。

返回值

此方法可以返回其中一个值。

注解

IExtendContextMenu::AddMenuItems 的实现通常读取在 piDataObject 上调用 IDataObject::GetDataHere 所需的节点类型和任何其他参数,然后通过在 piCallback 上调用 IContextMenuCallback::AddItem 根据需要添加上下文菜单项。

在尝试在 MMC 定义的插入点添加菜单项之前,管理单元应检查 pInsertionsAllowed 标志以获取权限。 例如,除非设置了CCM_INSERTIONALLOWED_NEW标志,否则管理单元不应将菜单项添加到CCM_INSERTIONPOINTID_PRIMARY_NEW或CCM_INSERTIONPOINTID_3RDPARTY_NEW。

pInsertionsAllowed 标志允许以下两个功能:

如果用户选择范围项,然后显示其上下文菜单,MMC 将为管理单元的 IComponentData 和 IComponent (提供拥有当前视图) 实现添加菜单项的机会。 MMC 调用由管理单元的 IComponent 实现实现的 IExtendContextMenu::AddMenuItems 方法,以允许管理单元向“ 视图 ”菜单添加菜单项。 MMC 调用由管理单元的 IComponentData 实现的 IExtendContextMenu::AddMenuItems 方法,以允许管理单元向所有其他菜单添加菜单项。 只有管理单元的 IComponent 实现可以向“ 视图 ”菜单添加项。

如果用户在未先选择作用域项的情况下显示作用域项的上下文菜单,MMC 将仅向管理单元的 IComponentData 实现提供向除 “视图 ”菜单以外的所有菜单添加菜单项的机会。 因此,当用户首先选择某个项时,“ 视图 ”菜单仅针对范围项显示。

调用方备注

AddMenuItems 方法不应在 piDataObject 指针或 piCallback 指针上调用 AddRef,也不应在返回后调用这些接口的方法。 相反,它应在返回之前对这些接口的方法进行所有必要的调用。 如果选择了其中任一项,则会在 IExtendContextMenu::Command 中返回指向 IDataObject 的指针,因此在此方法返回后不要保留此指针。 如果在未选择任何项目的情况下关闭菜单,则不会通知你。 此外,不要从 piCallback 查询备用接口,因为一个方法 IContextMenuCallback::AddItem 就足够了。

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 mmc.h

另请参阅

CONTEXTMENUITEM

IContextMenuCallback

IDataObject

IExtendContextMenu

使用上下文菜单