Partager via


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

La méthode IExtendContextMenu ::AddMenuItems permet à un composant logiciel enfichable d’ajouter des éléments à un menu contextuel.

Syntaxe

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

Paramètres

[in] piDataObject

Pointeur vers l’interface IDataObject sur l’objet de données du menu auquel les éléments sont ajoutés.

[in] piCallback

Pointeur vers un IContextMenuCallback qui peut ajouter des éléments au menu contextuel.

[in, out] pInsertionAllowed

Valeur qui identifie les points d’insertion d’éléments de menu définis par MMC qui peuvent être utilisés. Il peut s’agir d’une combinaison des indicateurs suivants :

CCM_INSERTIONALLOWED_TOP

Les éléments peuvent être insérés en haut d’un menu contextuel.

CCM_INSERTIONALLOWED_NEW

Les éléments peuvent être insérés dans le sous-menu Nouveau.

CCM_INSERTIONALLOWED_TASK

Les éléments peuvent être insérés dans le sous-menu Toutes les tâches.

CCM_INSERTIONALLOWED_VIEW

Les éléments peuvent être insérés dans le menu affichage de la barre d’outils ou dans le sous-menu Affichage du menu contextuel du volet de résultats.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Remarques

Une implémentation de IExtendContextMenu ::AddMenuItems lit généralement le type de nœud et tous les autres paramètres requis en appelant IDataObject ::GetDataHere sur piDataObject, puis ajoute des éléments de menu contextuel en appelant IContextMenuCallback ::AddItem sur piCallback.

Votre composant logiciel enfichable doit case activée les indicateurs pInsertionsAllowed pour l’autorisation avant d’essayer d’ajouter des éléments de menu aux points d’insertion définis par MMC. Par exemple, un composant logiciel enfichable ne doit pas ajouter d’éléments de menu à CCM_INSERTIONPOINTID_PRIMARY_NEW ou CCM_INSERTIONPOINTID_3RDPARTY_NEW, sauf si l’indicateur CCM_INSERTIONALLOWED_NEW est défini.

Les indicateurs pInsertionsAllowed autorisent les deux fonctionnalités suivantes :

Si l’utilisateur sélectionne un élément d’étendue, puis affiche son menu contextuel, MMC donne la possibilité aux implémentations IComponentData du composant logiciel enfichable et IComponent (propriétaire de l’affichage actuel) d’ajouter des éléments de menu. MMC appelle la méthode IExtendContextMenu ::AddMenuItems implémentée par l’implémentation IComponent du composant logiciel enfichable pour permettre au composant logiciel enfichable d’ajouter des éléments de menu au menu Affichage . MMC appelle la méthode IExtendContextMenu ::AddMenuItems implémentée par IComponentData du composant logiciel enfichable pour permettre au composant logiciel enfichable d’ajouter des éléments de menu à tous les autres menus. Seule l’implémentation IComponent du composant logiciel enfichable peut ajouter des éléments au menu Affichage .

Si l’utilisateur affiche le menu contextuel d’un élément d’étendue sans sélectionner au préalable l’élément d’étendue, MMC donne uniquement à l’implémentation IComponentData du composant logiciel enfichable la possibilité d’ajouter des éléments de menu à tous les menus à l’exception du menu Affichage . Par conséquent, le menu Affichage s’affiche uniquement pour un élément d’étendue si l’utilisateur sélectionne d’abord un élément.

Remarques aux appelants

La méthode AddMenuItems ne doit pas appeler AddRef sur le pointeur piDataObject ou le pointeur piCallback, ni appeler les méthodes de ces interfaces après le retour. Au lieu de cela, il doit effectuer tous les appels nécessaires aux méthodes de ces interfaces avant de revenir. Si l’un de ces éléments est sélectionné, vous recevrez le pointeur vers IDataObject dans IExtendContextMenu ::Command. Par conséquent, ne conservez pas ce pointeur après le retour de cette méthode. Vous ne serez pas averti si le menu est ignoré sans qu’aucun de vos éléments ne soit sélectionné. En outre, ne recherchez pas d’autres interfaces à partir de piCallback, car la méthode IContextMenuCallback ::AddItem doit suffire.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête mmc.h

Voir aussi

CONTEXTMENUITEM

IContextMenuCallback

Idataobject

IExtendContextMenu

Utilisation des menus contextuels