Compartir a través de


Método IExtendContextMenu::AddMenuItems (mmc.h)

El método IExtendContextMenu::AddMenuItems permite que un complemento agregue elementos a un menú contextual.

Sintaxis

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

Parámetros

[in] piDataObject

Puntero a la interfaz IDataObject en el objeto de datos del menú al que se agregan elementos.

[in] piCallback

Puntero a un IContextMenuCallback que puede agregar elementos al menú contextual.

[in, out] pInsertionAllowed

Valor que identifica los puntos de inserción de elementos de menú definidos por MMC que se pueden usar. Puede ser una combinación de las marcas siguientes:

CCM_INSERTIONALLOWED_TOP

Los elementos se pueden insertar en la parte superior de un menú contextual.

CCM_INSERTIONALLOWED_NEW

Los elementos se pueden insertar en el submenú Nuevo.

CCM_INSERTIONALLOWED_TASK

Los elementos se pueden insertar en el submenú Todas las tareas.

CCM_INSERTIONALLOWED_VIEW

Los elementos se pueden insertar en el menú de vista de la barra de herramientas o en el submenú Ver del menú contextual del panel de resultados.

Valor devuelto

Este método puede devolver uno de estos valores.

Comentarios

Una implementación de IExtendContextMenu::AddMenuItems suele leer el tipo de nodo y cualquier otro parámetro necesario llamando a IDataObject::GetDataHere en piDataObject y, a continuación, agrega elementos de menú contextual según corresponda llamando a IContextMenuCallback::AddItem en piCallback.

El complemento debe comprobar las marcas pInsertionsAllowed para obtener permiso antes de intentar agregar elementos de menú en los puntos de inserción definidos por MMC. Por ejemplo, un complemento no debe agregar elementos de menú a CCM_INSERTIONPOINTID_PRIMARY_NEW o CCM_INSERTIONPOINTID_3RDPARTY_NEW a menos que se establezca la marca de CCM_INSERTIONALLOWED_NEW.

Las marcas pInsertionsAllowed permiten las dos características siguientes:

Si el usuario selecciona un elemento de ámbito y, a continuación, muestra su menú contextual, MMC proporcionará a los complementos IComponentData e IComponent (que poseen la vista actual) la oportunidad de agregar elementos de menú. MMC llama al método IExtendContextMenu::AddMenuItems implementado por la implementación de IComponent del complemento para permitir que el complemento agregue elementos de menú al menú Ver . MMC llama al método IExtendContextMenu::AddMenuItems implementado por el IComponentData del complemento para permitir que el complemento agregue elementos de menú a todos los demás menús. Solo la implementación de IComponent del complemento puede agregar elementos al menú Ver .

Si el usuario muestra el menú contextual de un elemento de ámbito sin seleccionar primero el elemento de ámbito, MMC solo proporcionará a la implementación de IComponentData del complemento la oportunidad de agregar elementos de menú a todos los menús, excepto el menú Ver . Por lo tanto, el menú Ver solo aparece para un elemento de ámbito si el usuario selecciona primero un elemento.

Notas a los autores de llamadas

El método AddMenuItems no debe llamar a AddRef en el puntero piDataObject o en el puntero piCallback, ni debe llamar a los métodos de esas interfaces después de devolver. En su lugar, debe realizar todas las llamadas necesarias a los métodos de esas interfaces antes de devolverlas. Si se selecciona alguno de estos elementos, se le devolverá el puntero a IDataObject en IExtendContextMenu::Command, por lo que no mantenga este puntero después de que este método devuelva. No se le notificará si el menú se descarta sin que se seleccione ninguno de los elementos. Además, no consulte las interfaces alternativas de piCallback porque el método IContextMenuCallback::AddItem debe ser suficiente.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado mmc.h

Consulte también

CONTEXTMENUITEM

IContextMenuCallback

IDataObject

IExtendContextMenu

Trabajar con menús contextuales