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 |