Freigeben über


CSnapInItemImpl-Klasse

Diese Klasse stellt Methoden zum Implementieren eines Snap-In-Knotenobjekts bereit.

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem

Parameter

T
Ihre Klasse, abgeleitet von CSnapInItemImpl.

bIsExtension
TRUE, wenn das Objekt eine Snap-In-Erweiterung ist; andernfalls FALSE.

Member

Öffentliche Konstruktoren

Name Beschreibung
CSnapInItemImpl::CSnapInItemImpl Konstruktor.

Öffentliche Methoden

Name Beschreibung
CSnapInItemImpl::AddMenuItems Fügt einem Kontextmenü Menüelemente hinzu.
CSnapInItemImpl::Command Wird von der Konsole aufgerufen, wenn ein benutzerdefiniertes Menüelement ausgewählt ist.
CSnapInItemImpl::CreatePropertyPages Fügt dem Eigenschaftenblatt des Snap-Ins Seiten hinzu.
CSnapInItemImpl::FillData Kopiert Informationen zum Snap-In-Objekt in einen angegebenen Datenstrom.
CSnapInItemImpl::GetResultPaneInfo Ruft die RESULTDATAITEM Struktur des Snap-Ins ab.
CSnapInItemImpl::GetResultViewType Bestimmt den Vom Ergebnisbereich verwendeten Ansichtstyp.
CSnapInItemImpl::GetScopePaneInfo Ruft die SCOPEDATAITEM Struktur des Snap-Ins ab.
CSnapInItemImpl::Notify Wird von der Konsole aufgerufen, um das Snap-In über Aktionen zu benachrichtigen, die der Benutzer ausgeführt hat.
CSnapInItemImpl::QueryPagesFor Wird aufgerufen, um festzustellen, ob der Snap-In-Knoten Eigenschaftenseiten unterstützt.
CSnapInItemImpl::SetMenuInsertionFlags Ändert die Einfügekennzeichnungen des Menüs für ein Snap-In-Objekt.
CSnapInItemImpl::SetToolbarButtonInfo Legt die Informationen der angegebenen Symbolleistenschaltfläche fest.
CSnapInItemImpl::UpdateMenuState Aktualisiert den Status eines Kontextmenüelements.
CSnapInItemImpl::UpdateToolbarButton Aktualisiert den Status der angegebenen Symbolleistenschaltfläche.

Öffentliche Datenmember

Name Beschreibung
CSnapInItemImpl::m_bstrDisplayName Der Name des Snap-In-Objekts.
CSnapInItemImpl::m_resultDataItem Die vom CSnapInItemImpl Objekt verwendete Windows-StrukturRESULTDATAITEM.
CSnapInItemImpl::m_scopeDataItem Die vom CSnapInItemImpl Objekt verwendete Windows-StrukturSCOPEDATAITEM.

Hinweise

CSnapInItemImpl bietet eine grundlegende Implementierung für ein Snap-In-Knotenobjekt, z. B. Hinzufügen von Menüelementen und Symbolleisten, und Weiterleitungsbefehle für den Snap-In-Knoten an die entsprechende Handlerfunktion. Diese Features werden mithilfe verschiedener Schnittstellen und Zuordnungstypen implementiert. Die Standardimplementierung verarbeitet Benachrichtigungen, die an das Knotenobjekt gesendet werden, indem die richtige Instanz der abgeleiteten Klasse bestimmt und dann die Nachricht an die richtige Instanz weitergeleitet wird.

Vererbungshierarchie

CSnapInItem

CSnapInItemImpl

Anforderungen

Kopfzeile: atlsnap.h

CSnapInItemImpl::AddMenuItems

Diese Methode implementiert die Win32-Funktion IExtendContextMenu::AddMenuItems.

AddMenuItems(
    LPCONTEXTMENUCALLBACK piCallback,
    long* pInsertionAllowed,
    DATA_OBJECT_TYPES type);

Parameter

piCallback
[in] Zeigen Sie auf das IContextMenuCallback Element, das dem Kontextmenü Elemente hinzufügen kann.

pInsertionAllowed
[in, out] Identifies Microsoft Management Console (MMC)-defined, menu-item insertion points that can be used. 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ü "Neue Erstellen" eingefügt werden.

  • CCM_INSERTIONALLOWED_TASK Elemente können im Untermenü "Aufgabe" 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.

type
[in] Gibt den Objekttyp an. Sie kann einen der folgenden Werte aufweisen:

  • CCT_SCOPE Data-Objekt für bereichsbereichskontext.

  • CCT_RESULT Data-Objekt für den Ergebnisbereichkontext.

  • CCT_SNAPIN_MANAGER Data-Objekt für snap-in-Manager-Kontext.

  • CCT_UNINITIALIZED Data-Objekt weist einen ungültigen Typ auf.

CSnapInItemImpl::Command

Diese Methode implementiert die Win32-Funktion IExtendContextMenu::Command.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Parameter

lCommandID
[in] Gibt den Befehlsbezeichner des Menüelements an.

type
[in] Gibt den Objekttyp an. Sie kann einen der folgenden Werte aufweisen:

  • CCT_SCOPE Data-Objekt für bereichsbereichskontext.

  • CCT_RESULT Data-Objekt für den Ergebnisbereichkontext.

  • CCT_SNAPIN_MANAGER Data-Objekt für snap-in-Manager-Kontext.

  • CCT_UNINITIALIZED Data-Objekt weist einen ungültigen Typ auf.

CSnapInItemImpl::CreatePropertyPages

Diese Methode implementiert die Win32-Funktion IExtendPropertySheet::CreatePropertyPages.

CreatePropertyPages(
    LPPROPERTYSHEETCALLBACK lpProvider,
    long handle,
    IUnknown* pUnk,
    DATA_OBJECT_TYPES type);

Parameter

lpProvider
[in] Zeiger auf die IPropertySheetCallback Schnittstelle.

Behandeln
[in] Gibt das Handle an, das zum Weiterleiten der MMCN_PROPERTY_CHANGE-Benachrichtigung an die entsprechende Datenklasse verwendet wird.

Punk
[in] Zeigen Sie auf die IExtendPropertySheet Schnittstelle des Objekts, das Kontextinformationen zum Knoten enthält.

type
[in] Gibt den Objekttyp an. Sie kann einen der folgenden Werte aufweisen:

  • CCT_SCOPE Data-Objekt für bereichsbereichskontext.

  • CCT_RESULT Data-Objekt für den Ergebnisbereichkontext.

  • CCT_SNAPIN_MANAGER Data-Objekt für snap-in-Manager-Kontext.

  • CCT_UNINITIALIZED Data-Objekt weist einen ungültigen Typ auf.

CSnapInItemImpl::CSnapInItemImpl

Erstellt ein CSnapInItemImpl-Objekt.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Diese Funktion wird aufgerufen, um Informationen zum Element abzurufen.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Parameter

Cf
[in] Das Format (Text, Rich-Text oder Rich-Text mit OLE-Elementen) der Zwischenablage.

pStream
[in] Ein Zeiger auf den Datenstrom, der die Objektdaten enthält.

Hinweise

Um diese Funktion ordnungsgemäß zu implementieren, kopieren Sie die richtigen Informationen in den Datenstrom (pStream), je nach dem durch cf angegebenen Zwischenablageformat.

CSnapInItemImpl::GetResultViewType

Rufen Sie diese Funktion auf, um den Ansichtstyp für den Ergebnisbereich des Snap-In-Objekts abzurufen.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Parameter

ppViewType
[out] Zeigen Sie auf die Adresse des zurückgegebenen Ansichtstyps.

pViewOptions
[out] Zeigen Sie auf die MMC_VIEW_OPTIONS-Aufzählung, die die Konsole mit Optionen bereitstellt, die durch das eigene Snap-In angegeben werden. Die folgenden Werte sind möglich:

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 Weist die Konsole an, die Standardauswahl für die Listenansicht im Menü "Ansicht" nicht darzustellen. Ermöglicht dem Snap-In, seine eigenen benutzerdefinierten Ansichten nur im Ergebnisansichtsbereich anzuzeigen. Dies ist das einzige Optionsflagge, das derzeit definiert ist.

  • MMC_VIEW_OPTIONS_NONE = 0 Lässt die Standardansichtsoptionen zu.

CSnapInItemImpl::GetScopePaneInfo

Rufen Sie diese Funktion auf, um die SCOPEDATAITEM Struktur des Snap-Ins abzurufen.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Parameter

pScopeDataItem
[out] Ein Zeiger auf die SCOPEDATAITEM Struktur des CSnapInItemImpl Objekts.

CSnapInItemImpl::GetResultPaneInfo

Rufen Sie diese Funktion auf, um die RESULTDATAITEM Struktur des Snap-Ins abzurufen.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Parameter

pResultDataItem
[out] Ein Zeiger auf die RESULTDATAITEM Struktur des CSnapInItemImpl Objekts.

CSnapInItemImpl::m_bstrDisplayName

Enthält die Zeichenfolge, die für das Knotenelement angezeigt wird.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

Die SCOPEDATAITEM Struktur des Snap-In-Datenobjekts.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

Die RESULTDATAITEM-Struktur des Snap-In-Datenobjekts.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

Wird aufgerufen, wenn das Snap-In-Objekt vom Benutzer bearbeitet wird.

STDMETHOD(Notify)(
    MMC_NOTIFY_TYPE event,
    long arg,
    long param,
    IComponentData* pComponentData,
    IComponent* pComponent,
    DATA_OBJECT_TYPES type) = 0;

Parameter

event
[in] Identifiziert eine Aktion, die von einem Benutzer ausgeführt wird. Folgende Benachrichtigungen sind möglich:

  • MMCN_ACTIVATE Gesendet, wenn ein Fenster aktiviert und deaktiviert wird.

  • MMCN_ADD_IMAGES Gesendet, um dem Ergebnisbereich Bilder hinzuzufügen.

  • MMCN_BTN_CLICK Gesendet, wenn der Benutzer auf eine der Symbolleistenschaltflächen klickt.

  • MMCN_CLICK Gesendet, wenn ein Benutzer auf eine Maustaste in einem Listenansichtselement klickt.

  • MMCN_DBLCLICK Gesendet, wenn ein Benutzer auf eine Maustaste auf ein Listenansichtselement doppelklicken soll.

  • MMCN_DELETE Gesendet, um das Snap-In darüber zu informieren, dass das Objekt gelöscht werden soll.

  • MMCN_EXPAND Gesendet, wenn ein Ordner erweitert oder vertraglich vereinbart werden muss.

  • MMCN_MINIMIZED Gesendet, wenn ein Fenster minimiert oder maximiert wird.

  • MMCN_PROPERTY_CHANGE Gesendet, um ein Snap-In-Objekt zu benachrichtigen, dass sich die Ansicht des Snap-In-Objekts ändert.

  • MMCN_REMOVE_CHILDREN Gesendet, wenn das Snap-In die gesamte Unterstruktur löschen muss, die er unterhalb des angegebenen Knotens hinzugefügt hat.

  • MMCN_RENAME Beim ersten Mal gesendet, um eine Umbenennung abzufragen, und das zweite Mal, um die Umbenennung auszuführen.

  • MMCN_SELECT Gesendet, wenn ein Element im Bereich oder Ergebnisansichtsbereich ausgewählt ist.

  • MMCN_SHOW Gesendet, wenn ein Bereichselement zum ersten Mal ausgewählt oder deaktiviert wird.

  • MMCN_VIEW_CHANGE Gesendet, wenn das Snap-In alle Ansichten aktualisieren kann, wenn eine Änderung auftritt.

arg
[in] Hängt vom Benachrichtigungstyp ab.

param
[in] Hängt vom Benachrichtigungstyp ab.

pComponentData
[out] Ein Zeiger auf das objekt, das implementiert IComponentDatawird. Dieser Parameter ist NULL, wenn die Benachrichtigung nicht von IComponentData::Notify.

pComponent
[out] Ein Zeiger auf das Objekt, das implementiert IComponentwird. Dieser Parameter ist NULL, wenn die Benachrichtigung nicht von IComponent::Notify.

type
[in] Gibt den Objekttyp an. Sie kann einen der folgenden Werte aufweisen:

  • CCT_SCOPE Data-Objekt für bereichsbereichskontext.

  • CCT_RESULT Data-Objekt für den Ergebnisbereichkontext.

  • CCT_SNAPIN_MANAGER Data-Objekt für snap-in-Manager-Kontext.

  • CCT_UNINITIALIZED Data-Objekt weist einen ungültigen Typ auf.

CSnapInItemImpl::QueryPagesFor

Wird aufgerufen, um festzustellen, ob der Snap-In-Knoten Eigenschaftenseiten unterstützt.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Rufen Sie diese Funktion auf, um die Von pInsertionAllowed angegebenen Menüeinfügekennzeichnungen für das Snap-In-Objekt zu ändern.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Parameter

bBeforeInsertion
[in] Nonzero, wenn die Funktion aufgerufen werden soll, bevor elemente dem Kontextmenü hinzugefügt werden; andernfalls 0.

pInsertionAllowed
[in, out] Identifies Microsoft Management Console (MMC)-defined, menu-item insertion points that can be used. 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ü "Neue Erstellen" eingefügt werden.

  • CCM_INSERTIONALLOWED_TASK Elemente können im Untermenü "Aufgabe" 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.

Hinweise

Wenn Sie ein primäres Snap-In entwickeln, können Sie jedes der Einfügekennzeichnungen zurücksetzen, um die Art der Menüelemente einzuschränken, die eine Erweiterung eines Drittanbieters hinzufügen kann. Das primäre Snap-In kann z. B. das CCM_INSERTIONALLOWED_NEW Flag löschen, um zu verhindern, dass Erweiterungen eigene Menüelemente zum Erstellen neuer Menüelemente hinzufügen.

Sie sollten nicht versuchen, Bits in "pInsertionAllowed " festzulegen, die ursprünglich gelöscht wurden. Zukünftige Versionen von MMC verwenden möglicherweise Bits, die derzeit nicht definiert sind, daher sollten Sie keine Bits ändern, die derzeit nicht definiert sind.

CSnapInItemImpl::SetToolbarButtonInfo

Rufen Sie diese Funktion auf, um alle Symbolleistenschaltflächenformatvorlagen des Snap-In-Objekts zu ändern, bevor die Symbolleiste erstellt wird.

void SetToolbarButtonInfo(
    UINT id,
    BYTE* fsState,
    BYTE* fsType);

Parameter

id
[in] Die ID der festzulegenden Symbolleistenschaltfläche.

fsState
[in] Die Statuskennzeichnungen der Schaltfläche. Dies kann eine oder mehrere der folgenden Aktionen sein:

  • TBSTATE_CHECKED Die Schaltfläche weist die TBSTYLE_CHECKED Formatvorlage auf und wird gedrückt.

  • TBSTATE_ENABLED Die Schaltfläche akzeptiert Benutzereingaben. Eine Schaltfläche, die diesen Zustand nicht aufweist, akzeptiert keine Benutzereingaben und ist abgeblennt.

  • TBSTATE_HIDDEN Die Schaltfläche ist nicht sichtbar und kann keine Benutzereingaben empfangen.

  • TBSTATE_INDETERMINATE Die Schaltfläche ist grau dargestellt.

  • TBSTATE_PRESSED Die Schaltfläche wird gedrückt.

  • TBSTATE_WRAP Ein Zeilenumbruch folgt der Schaltfläche. Die Schaltfläche muss auch über die TBSTATE_ENABLED verfügen.

fsType
[in] Die Statuskennzeichnungen der Schaltfläche. Dies kann eine oder mehrere der folgenden Aktionen sein:

  • TBSTYLE_BUTTON Erstellt eine Standard-Knopfdrucktaste.

  • TBSTYLE_CHECK Erstellt eine Schaltfläche, die jedes Mal zwischen dem gedrückten und nicht gedrückten Zustand wechselt, wenn der Benutzer darauf klickt. Die Schaltfläche hat eine andere Hintergrundfarbe, wenn sie sich im gedrückten Zustand befindet.

  • TBSTYLE_CHECKGROUP Erstellt eine Kontrollkästchenschaltfläche, die gedrückt bleibt, bis eine andere Schaltfläche in der Gruppe gedrückt wird.

  • TBSTYLE_GROUP Erstellt eine Schaltfläche, die gedrückt bleibt, bis eine andere Schaltfläche in der Gruppe gedrückt wird.

  • TBSTYLE_SEP Erstellt ein Trennzeichen und stellt eine kleine Lücke zwischen Schaltflächengruppen bereit. Eine Schaltfläche mit dieser Formatvorlage empfängt keine Benutzereingaben.

CSnapInItemImpl::UpdateMenuState

Rufen Sie diese Funktion auf, um ein Menüelement zu ändern, bevor es in das Kontextmenü des Snap-In-Objekts eingefügt wird.

void UpdateMenuState(
    UINT id,
    LPTSTR pBuf,
    UINT* flags);

Parameter

id
[in] Die ID des festzulegenden Menüelements.

pBuf
[in] Ein Zeiger auf die Zeichenfolge für das zu aktualisierende Menüelement.

flags
[in] Gibt die neuen Statuskennzeichnungen an. Dies kann eine Kombination der folgenden Flags sein:

  • MF_POPUP Gibt an, dass es sich um ein Untermenü im Kontextmenü handelt. Menüelemente, Einfügepunkte und weitere Untermenüs können diesem Untermenü mithilfe der lCommandID zugehörigen IInsertionPointIDElemente hinzugefügt werden.

  • MF_BITMAP und MF_OWNERDRAW Diese Flags sind nicht zulässig und führen zu einem Rückgabewert von E_INVALIDARG.

  • MF_SEPARATOR Zeichnet eine horizontale Trennlinie. Es ist nur IContextMenuProvider zulässig, Menüelemente mit MF_SEPARATOR Satz hinzuzufügen.

  • MF_CHECKED Platziert ein Häkchen neben dem Menüelement.

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

  • MF_ENABLED Aktiviert das Menüelement, sodass es ausgewählt werden kann, wodurch es aus dem grauen Zustand wiederhergestellt wird.

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

  • MF_MENUBARBREAK Funktionen entsprechen der MF_MENUBREAK Kennzeichnung für eine Menüleiste. Bei einem Dropdownmenü, untermenü oder Kontextmenü wird die neue Spalte durch eine vertikale Linie von der alten Spalte getrennt.

  • MF_MENUBREAK Platziert 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 Platziert kein Häkchen neben dem Element (Standardeinstellung).

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.

CSnapInItemImpl::UpdateToolbarButton

Rufen Sie diese Funktion auf, um eine Symbolleistenschaltfläche des Snap-In-Objekts zu ändern, bevor sie angezeigt wird.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Parameter

id
Gibt die Schaltflächen-ID der zu aktualisierenden Symbolleistenschaltfläche an.

fsState
Gibt einen Status der Symbolleistenschaltfläche an. Wenn dieser Zustand festgelegt werden soll, geben Sie TRUE zurück. Dies kann eine Kombination der folgenden Flags sein:

  • ENABLED Die Schaltfläche akzeptiert Benutzereingaben. Eine Schaltfläche, die diesen Zustand nicht aufweist, akzeptiert keine Benutzereingaben und ist abgeblennt.

  • AKTIVIERT Die Schaltfläche hat den CHECKED-Stil und wird gedrückt.

  • AUSGEBLENDET Die Schaltfläche ist nicht sichtbar und kann keine Benutzereingaben empfangen.

  • UNBESTIMMT Die Schaltfläche ist grau dargestellt.

  • BUTTONPRESSED Die Taste wird gedrückt.

Siehe auch

Klassenübersicht