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 |