IExtendContextMenu::AddMenuItems-Methode (mmc.h)

Die IExtendContextMenu::AddMenuItems-Methode ermöglicht einem Snap-In das Hinzufügen von Elementen zu einem Kontextmenü.

Syntax

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

Parameter

[in] piDataObject

Ein Zeiger auf die IDataObject-Schnittstelle für das Datenobjekt des Menüs, dem Elemente hinzugefügt werden.

[in] piCallback

Ein Zeiger auf einen IContextMenuCallback , der dem Kontextmenü Elemente hinzufügen kann.

[in, out] pInsertionAllowed

Ein -Wert, der von MMC definierte Einfügepunkte für Menüelemente identifiziert, die verwendet werden können. Dies kann eine Kombination der folgenden Flags sein:

CCM_INSERTIONALLOWED_TOP

Elemente können oben in ein Kontextmenü eingefügt werden.

CCM_INSERTIONALLOWED_NEW

Elemente können in das Untermenü "Neu" eingefügt werden.

CCM_INSERTIONALLOWED_TASK

Elemente können in das Untermenü Alle Aufgaben eingefügt werden.

CCM_INSERTIONALLOWED_VIEW

Elemente können im Menü der Symbolleistenansicht oder im Untermenü Ansicht des Kontextmenüs des Ergebnisbereichs eingefügt werden.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Hinweise

Eine Implementierung von IExtendContextMenu::AddMenuItems liest in der Regel den Knotentyp und alle anderen Parameter, die für den Aufruf von IDataObject::GetDataHere für piDataObject erforderlich sind, und fügt dann entsprechend Kontextmenüelemente hinzu, indem IContextMenuCallback::AddItem auf piCallback aufgerufen wird.

Ihr Snap-In sollte die pInsertionsAllowed-Flags auf Berechtigungen überprüfen, bevor Sie versuchen, Menüelemente an den von MMC definierten Einfügepunkten hinzuzufügen. Ein Snap-In sollte beispielsweise keine Menüelemente zu CCM_INSERTIONPOINTID_PRIMARY_NEW oder CCM_INSERTIONPOINTID_3RDPARTY_NEW hinzufügen, es sei denn, das flag CCM_INSERTIONALLOWED_NEW ist festgelegt.

Die pInsertionsAllowed-Flags ermöglichen die folgenden beiden Features:

Wenn der Benutzer ein Bereichselement auswählt und dann dessen Kontextmenü anzeigt, gibt MMC sowohl den IComponentData- als auch IComponent-Implementierungen des Snap-Ins (die die aktuelle Ansicht besitzt) die Möglichkeit, Menüelemente hinzuzufügen. MMC ruft die IExtendContextMenu::AddMenuItems-Methode auf, die von der IComponent-Implementierung des Snap-Ins implementiert wird, damit das Snap-In Menüelemente zum Menü Ansicht hinzufügen kann. MMC ruft die IExtendContextMenu::AddMenuItems-Methode auf, die vom IComponentData des Snap-Ins implementiert wird, damit das Snap-In allen anderen Menüs Menüelemente hinzufügen kann. Nur die IComponent-Implementierung des Snap-Ins kann dem Menü Ansicht Elemente hinzufügen.

Wenn der Benutzer das Kontextmenü eines Bereichselements anzeigt, ohne zuerst das Bereichselement auszuwählen, gibt MMC der IComponentData-Implementierung des Snap-Ins nur die Möglichkeit, allen Menüs außer dem Menü Ansicht Menüelemente hinzuzufügen. Folglich wird das Menü Ansicht nur für ein Bereichselement angezeigt, wenn der Benutzer zuerst ein Element auswählt.

Hinweise für Anrufer

Die AddMenuItems-Methode sollte AddRef weder für den piDataObject-Zeiger oder den piCallback-Zeiger aufrufen, noch sollte sie nach der Rückgabe die Methoden dieser Schnittstellen aufrufen. Stattdessen sollte vor der Rückgabe alle erforderlichen Aufrufe der Methoden dieser Schnittstellen erfolgen. Wenn eines dieser Elemente ausgewählt ist, erhalten Sie den Zeiger auf IDataObject in IExtendContextMenu::Command zurück. Behalten Sie diesen Zeiger also nicht bei, nachdem diese Methode zurückgegeben wurde. Sie werden nicht benachrichtigt, wenn das Menü geschlossen wird, ohne dass Ihre Elemente ausgewählt wurden. Fragen Sie außerdem keine alternativen Schnittstellen von piCallback ab, da die eine Methode, IContextMenuCallback::AddItem, ausreichend sein sollte.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile mmc.h

Weitere Informationen

CONTEXTMENUITEM

IContextMenuCallback

Idataobject

IExtendContextMenu

Arbeiten mit Kontextmenüs