Поделиться через


Метод 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 обычно считывает тип узла и любые другие параметры, необходимые путем вызова IDataObject::GetDataHere в piDataObject, а затем добавляет элементы контекстного меню соответствующим образом путем вызова IContextMenuCallback::AddItem в piCallback.

Оснастка должна проверка флаги pInsertionsAllowed для разрешения, прежде чем пытаться добавить пункты меню в точки вставки, определенные MMC. Например, оснастка не должна добавлять пункты меню в CCM_INSERTIONPOINTID_PRIMARY_NEW или CCM_INSERTIONPOINTID_3RDPARTY_NEW, если не установлен флаг CCM_INSERTIONALLOWED_NEW.

Флаги pInsertionsAllowed позволяют использовать следующие две функции:

Если пользователь выбирает элемент область, а затем отображает его контекстное меню, MMC предоставляет возможность добавлять элементы меню для оснастки IComponentData и IComponent (которому принадлежит текущее представление). MMC вызывает метод IExtendContextMenu::AddMenuItems, реализованный реализацией оснастки IComponent, чтобы позволить оснастке добавлять пункты меню в меню Вид . MMC вызывает метод IExtendContextMenu::AddMenuItems, реализованный iComponentData оснастки, чтобы позволить оснастке добавлять пункты меню во все остальные меню. Только реализация оснастки IComponent может добавлять элементы в меню Вид .

Если пользователь отображает контекстное меню элемента область без предварительного выбора элемента область, MMC предоставит только реализацию IComponentData оснастки возможность добавлять элементы меню во все меню, кроме меню Вид. Следовательно, меню Вид отображается только для область элемента, если пользователь сначала выбирает элемент.

Примечания к вызывающим абонентам

Метод AddMenuItems не должен вызывать AddRef для указателя piDataObject или указателя piCallback, а также не должен вызывать методы этих интерфейсов после возврата. Вместо этого он должен выполнять все необходимые вызовы методов этих интерфейсов перед возвратом. Если выбран какой-либо из этих элементов, вам будет возвращен указатель на IDataObject в IExtendContextMenu::Command, поэтому не сохраняйте этот указатель после возврата этим методом. Вы не получите уведомления, если меню будет отклонено без выбора каких-либо из ваших элементов. Кроме того, не запрашивайте альтернативные интерфейсы из piCallback, так как одного метода, IContextMenuCallback::AddItem, должно быть достаточно.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header mmc.h

См. также раздел

CONTEXTMENUITEM

IContextMenuCallback

Idataobject

IExtendContextMenu

Работа с контекстными меню