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 |