Freigeben über


CONTEXTMENUITEM2 Struktur (mmc.h)

Die CONTEXTMENUITEM2-Struktur wird in MMC 2.0 eingeführt.

Die CONTEXTMENUITEM2-Struktur wird an die IContextMenuCallback2::AddItem-Methode oder die IContextMenuProvider::AddItem-Methode (geerbt von IContextMenuCallback) übergeben, um ein neues Menüelement, ein neues Untermenü oder eine neue Einfügemarke zu definieren. Das Kontextmenü wird vom Stamm nach unten erstellt, wobei jedes neue Element an das Ende des Untermenüs oder der Einfügemarke wechselt, an der das neue Element eingefügt wird. Die CONTEXTMENUITEM2-Struktur ersetzt die CONTEXTMENUITEM-Struktur (mit Ausnahme des strLanguageIndependentName-Members befinden sich alle Elemente von CONTEXTMENUITEM2 in CONTEXTMENUITEM).

Syntax

typedef struct _CONTEXTMENUITEM2 {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
  LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;

Member

strName

Ein Zeiger auf eine NULL-Zeichenfolge, die den Namen des Menüelements oder des Untermenüs enthält. Dieses Element kann nicht NULL sein, mit Ausnahme eines Trennzeichens oder einer Einfügemarke.

strStatusBarText

Ein Zeiger auf eine NULL-Zeichenfolge, die den Text enthält, der auf der status leiste angezeigt wird, wenn dieses Element hervorgehoben ist. Dieses Element kann NULL sein.

lCommandID

Ein Wert, der den Befehlsbezeichner für Menüelemente angibt. Wenn das Menüelement von IExtendContextMenu::AddMenuItems hinzugefügt und dann ausgewählt wird, ist lCommandID der Befehls-ID-Parameter, der an IExtendContextMenu::Command zurückgegeben wird. Wenn dieses Menüelement von der IContextMenuProvider-Schnittstelle hinzugefügt und dann ausgewählt wird, ist dies die Befehls-ID, die von IContextMenuProvider::ShowContextMenuMenu an pISelected zurückgegeben wird. Wenn dies eine Einfügemarke (CCM_SPECIAL_INSERTION_POINT in fSpecialFlags festgelegt ist) oder ein Untermenü (MF_POPUP in fFlags festgelegt ist), verwenden Sie lCommandID in nachfolgenden Aufrufen als lInsertionPointID (weitere Informationen finden Sie in der folgenden Liste). Lesen Sie die folgende Diskussion sorgfältig durch, da bestimmte Bits in der neuen Einfügemarkes-ID aktiviert sein müssen und andere deaktiviert sein müssen.

Die folgenden Bits in der Befehls-ID erfordern eine spezielle Behandlung für Elemente, die keine Einfügepunkte oder Untermenüs sind.

CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)

Andere Elemente als Einfügepunkte und Untermenüs können nicht hinzugefügt werden, wenn diese Bits festgelegt werden.

Die folgenden Bits in der Einfügemarkes-ID erfordern eine spezielle Behandlung für Elemente, die Einfügepunkte (fSpecialFlags und CCM_SPECIAL_INSERTION_POINT) oder Untermenüs (fFlags und MF_POPUP) sind.

CCM_INSERTIONPOINTID_MASK_SPECIAL (0xFFFF0000)

Besonderes Verhalten. Snap-Ins können die anderen Bits nach Bedarf verwenden.

CCM_INSERTIONPOINTID_MASK_SHARED (0x80000000)

Diese Einfügepunkte und Untermenüs werden vom Ersteller des Kontextmenüs, der primären Erweiterung und der Drittanbietererweiterung gemeinsam genutzt. Elemente, die einer freigegebenen Einfügemarke oder einem Untermenü hinzugefügt werden, stehen dem Ersteller des Kontextmenüs, der primären Erweiterung und der Drittanbietererweiterung zur Verfügung.

Wenn dieses Bit nicht festgelegt ist, können die IContextMenuProvider-Schnittstelle und jede Erweiterung dieselbe ID verwenden. Jede ID verweist auf eine andere Einfügemarke oder ein anderes Untermenü.

Nur der Ersteller des Kontextmenüs und das primäre Snap-In können freigegebene Einfügepunkte oder Untermenüs erstellen.

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY (0x40000000)

Dieses Bit muss für freigegebene Einfügepunkte und Untermenüs festgelegt werden, die vom primären Snap-In erstellt wurden, und nicht für diejenigen festgelegt werden, die vom Ersteller des Kontextmenüs erstellt wurden. Dadurch werden ID-Konflikte zwischen den beiden Quellen von freigegebenen Einfügepunkten und Untermenüs verhindert.

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)

Ermöglicht dem primären Snap-In das Hinzufügen von Elementen zu einer freigegebenen Einfügemarke oder einem Untermenü.

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)

Ermöglicht Erweiterungs-Snap-Ins das Hinzufügen von Elementen zu einer freigegebenen Einfügemarke oder einem Untermenü.

CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)

Einfügepunkte oder Untermenüs können mit diesem Wertsatz nicht hinzugefügt werden.

lInsertionPointID

Ein Wert, der angibt, wo im Kontextmenü das neue Element hinzugefügt werden soll. Snap-Ins können nur Elemente zu Einfügepunkten hinzufügen, die vom Menüersteller oder dem primären Snap-In erstellt werden. Die folgenden Einfügepunkte werden von MMC in den Standardkontextmenüs für Elemente im Bereichsbereich und im Ergebnisbereich der Listenansicht erstellt:

0 (Null)

Eine lInsertionPointID von 0 verweist auf das Stammmenü für dieses Kontextmenü. Der Wert 0 kann austauschbar mit CCM_INSERTIONPOINTID_ROOT_MENU verwendet werden. Beachten Sie, dass nur IContextMenuProvider Elemente direkt zum Stammmenü hinzufügen darf. Erweiterungen können nur Elemente zu Einfügepunkten und Untermenüs hinzufügen, die dem Stammmenü von IContextMenuProvider oder MMC hinzugefügt wurden.

CCM_INSERTIONPOINTID_PRIMARY_TOP (0xA0000000)

Das primäre Snap-In kann diese Einfügemarke verwenden, um elemente am oberen Rand des Standard Kontextmenüs hinzuzufügen.

CCM_INSERTIONPOINTID_PRIMARY_NEW (0xA0000001)

Das primäre Snap-In kann diese Einfügemarke verwenden, um oben im Untermenü "Neu " Elemente hinzuzufügen. Das Untermenü "Neu " ist in Kontextmenüs des Bereichs- und Ergebnisbereichs verfügbar.

CCM_INSERTIONPOINTID_PRIMARY_TASK (0xA0000002)

Das primäre Snap-In kann diese Einfügemarke verwenden, um oben im Untermenü "Alle Aufgaben" Elemente hinzuzufügen. Das Untermenü "Alle Aufgaben " ist in Kontextmenüs des Bereichs- und Ergebnisbereichs verfügbar.

CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)

Das primäre Snap-In kann diese Einfügemarke verwenden, um dem Menü Ansicht Elemente hinzuzufügen. Wenn der Benutzer auf der Symbolleiste auf das Dropdownmenü Ansicht klickt, ist diese Einfügemarke vorhanden, aber die Einfügepunkte Neu und Alle Aufgaben werden nicht angezeigt.

CCM_INSERTIONPOINTID_3RDPARTY_NEW (0x90000001)

Erweiterungs-Snap-Ins können diese Einfügemarke verwenden, um elemente am unteren Rand des Untermenüs Neu hinzuzufügen. Das Untermenü Neu ist nur für Kontextmenüs im Bereichsbereich und nicht für Kontextmenüs im Ergebnisbereich vorhanden.

CCM_INSERTIONPOINTID_3RDPARTY_TASK (0x90000002)

Erweiterungs-Snap-Ins können diese Einfügemarke verwenden, um elemente am unteren Rand des Untermenüs "Alle Aufgaben" hinzuzufügen.

CCM_INSERTIONPOINTID_ROOT_MENU (0x80000000)

IContextMenuProvider kann diese Einfügemarke verwenden, um dem Stammmenü Elemente hinzuzufügen.

Weder primäre Erweiterungen noch Erweiterungen von Drittanbietern können Elemente zum Stammmenü hinzufügen, außer über Einfügepunkte, die von IContextMenuProvider hinzugefügt wurden.

fFlags

Ein Wert, der mindestens eins der folgenden Formatflags angibt:

MF_POPUP

Das erstellte Element ist ein Untermenü im Kontextmenü. Menüelemente, Einfügepunkte und andere Untermenüs können dem erstellten Untermenü hinzugefügt werden. das neue Menüelement, Untermenü oder Einfügemarke sollte den lCommandID-Member des erstellten Untermenüs als lInsertionPointID-Memberwert verwenden.

MF_BITMAP

Diese Flags werden nicht unterstützt. IContextMenuCallback2::AddItem gibt E_INVALIDARG zurück.

MF_OWNERDRAW

Diese Flags werden nicht unterstützt. IContextMenuCallback2::AddItem gibt E_INVALIDARG zurück.

MF_SEPARATOR

Zeichnet eine horizontale Trennlinie.

Nur IContextMenuProvider kann Menüelemente mit MF_SEPARATOR hinzufügen.

Die folgenden Flags funktionieren auf die gleiche Weise wie in der Windows-API.

MF_CHECKED

Wählt das Menüelement aus.

MF_DISABLED

Deaktiviert das Menüelement, sodass es nicht ausgewählt werden kann, aber das Flag dimmt das Menüelement nicht.

MF_ENABLED

Aktiviert das Menüelement, sodass es ausgewählt werden kann, und wiederherstellen es aus dem abgeblendeten Zustand.

MF_GRAYED

Deaktiviert das Menüelement, sodass es nicht ausgewählt werden kann.

MF_MENUBARBREAK

Funktioniert genauso wie das MF_MENUBREAK-Flag für eine Menüleiste. Bei einem Dropdownmenü, Untermenü oder Kontextmenü trennt eine vertikale Linie die neue Spalte von der alten Spalte.

MF_MENUBREAK

Places das Element in einer neuen Zeile (für eine Menüleiste) oder in einer neuen Spalte (für ein Dropdownmenü, Untermenü oder Kontextmenü), ohne Spalten zu trennen.

MF_UNCHECKED

Wählt das Element nicht aus (Standard).

Die folgenden Flaggruppen können nicht zusammen verwendet werden:

  • MF_DISABLED, MF_ENABLED und MF_GRAYED
  • MF_MENUBARBREAK und MF_MENUBREAK
  • MF_CHECKED und MF_UNCHECKED

fSpecialFlags

Ein Wert, der mindestens eins der folgenden Flags angibt:

CCM_SPECIAL_SEPARATOR (0x0001)

Ignorieren Sie alle anderen Parameter außer lInsertionPointID. Fügen Sie am Ende des Menüs oder an der angegebenen Einfügemarke ein Trennzeichen hinzu. Trennzeichen, die oben oder unten in einem Menü oder Untermenü platziert werden, werden nicht angezeigt. Trennzeichen ohne Menüelemente dazwischen werden in ein einzelnes Trennzeichen reduziert.

Nur IContextMenuProvider kann Trennzeichen hinzufügen, speziell oder anderweitig.

CCM_SPECIAL_SUBMENU (0x0002)

Wenn dieses Untermenü leer ist, wird es abgeblendet angezeigt; dies ist nur für MF_POPUP Elemente gültig.

CCM_SPECIAL_DEFAULT_ITEM (0x0004)

Dies ist das Standardmenüelement. Wenn mehr als ein Menüelement dieses Flag angibt, hat das letzte Element in jedem Untermenü Vorrang.

CCM_SPECIAL_INSERTION_POINT (0x0008)

Ignorieren Sie alle anderen Parameter außer lCommandID und lInsertionPointID. Dieses Flag erstellt eine neue Einfügemarke am Ende der Einfügemarke oder des Untermenüs, das durch lInsertionPointID identifiziert wird. Neue Menüelemente, Untermenüs oder Einfügepunkte können der erstellten Einfügemarke hinzugefügt werden. Das neue Menüelement, Untermenü oder Einfügemarke sollte den lCommandID-Member der erstellten Einfügemarke als lInsertionPointID-Elementwert verwenden.

CCM_SPECIAL_TESTONLY = 0x0010

Überprüfen Sie die Elementparameter, aber fügen Sie das Menüelement nicht hinzu. Gibt einen Ergebniscode zurück, der angibt, ob ein Add-Vorgang erfolgreich gewesen wäre.

strLanguageIndependentName

Der sprachunabhängige Name des Menüelements. Rufen Sie diesen Wert in MMC 2.0 Automation Object Model-Anwendungen ab, indem Sie die MenuItem.LanguageIndependentName-Eigenschaft abrufen. Der strLanguageIndependentName-Member darf nicht NULL oder eine leere Zeichenfolge sein, es sei denn, es wird ein Trennzeichen oder eine Einfügemarke hinzugefügt. Andernfalls schlägt die IContextMenuCallback::AddItem-Methode mit E_INVALIDARG als Rückgabewert fehl.

Anforderungen

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

Weitere Informationen

IContextMenuCallback2

IContextMenuProvider

IExtendContextMenu

Arbeiten mit Kontextmenüs