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.
Handle
[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
vgl
[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 IComponentData
wird. Dieser Parameter ist NULL, wenn die Benachrichtigung nicht von IComponentData::Notify
.
pComponent
[out] Ein Zeiger auf das Objekt, das implementiert IComponent
wird. 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örigenIInsertionPointID
Elemente 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.