IDispEventImpl-Klasse
Diese Klasse stellt Implementierungen der IDispatch
Methoden bereit.
Wichtig
Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.
Syntax
template <UINT nID, class T,
const IID* pdiid = &IID_NULL,
const GUID* plibid = &GUID_NULL,
WORD wMajor = 0,
WORD wMinor = 0,
class tihclass = CcomTypeInfoHolder>
class ATL_NO_VTABLE IDispEventImpl : public IDispEventSimpleImpl<nID, T, pdiid>
Parameter
Nid
Ein eindeutiger Bezeichner für das Quellobjekt. Wenn IDispEventImpl
es sich um die Basisklasse für ein zusammengesetztes Steuerelement handelt, verwenden Sie die Ressourcen-ID des gewünschten enthaltenen Steuerelements für diesen Parameter. Verwenden Sie in anderen Fällen eine beliebige positive ganze Zahl.
T
Die Klasse des Benutzers, die von IDispEventImpl
.
pdiid
Der Zeiger auf die IID der ereignisdispinterface, die von dieser Klasse implementiert wird. Diese Schnittstelle muss in der Typbibliothek definiert werden, die durch plibid, wMajor und wMinor bezeichnet wird.
plibid
Ein Zeiger auf die Typbibliothek, die die verteilte Schnittstelle definiert, auf die von pdiid verwiesen wird. Wenn &GUID_NULL, wird die Typbibliothek aus der Objektbeschaffung der Ereignisse geladen.
wMajor
Die Hauptversion der Typbibliothek Der Standardwert ist 0.
wMinor
Die Nebenversion der Typbibliothek Der Standardwert ist 0.
tihclass
Die Klasse, die zum Verwalten der Typinformationen für T verwendet wird. Der Standardwert ist eine Klasse vom Typ CComTypeInfoHolder
; Sie können diesen Vorlagenparameter jedoch überschreiben, indem Sie eine Klasse eines anderen Typs als CComTypeInfoHolder
.
Member
Öffentliche Typedefs
Name | Beschreibung |
---|---|
IDispEventImpl::_tihclass | Die Klasse, die zum Verwalten der Typinformationen verwendet wird. Standardmäßig CComTypeInfoHolder . |
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
IDispEventImpl::IDispEventImpl | Der Konstruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
IDispEventImpl::GetFuncInfoFromId | Sucht den Funktionsindex für den angegebenen Verteilerbezeichner. |
IDispEventImpl::GetIDsOfNames | Ordnet ein einzelnes Element und einen optionalen Satz von Argumentnamen einem entsprechenden Satz ganzzahliger DISPIDs zu. |
IDispEventImpl::GetTypeInfo | Ruft die Typinformationen für ein Objekt ab. |
IDispEventImpl::GetTypeInfoCount | Ruft die Anzahl der Typinformationsschnittstellen ab. |
IDispEventImpl::GetUserDefinedType | Ruft den grundlegenden Typ eines benutzerdefinierten Typs ab. |
Hinweise
IDispEventImpl
bietet eine Möglichkeit zum Implementieren einer Ereignisdispinterface, ohne dass Sie Implementierungscode für jede Methode/jedes Ereignis auf dieser Schnittstelle bereitstellen müssen. IDispEventImpl
stellt Implementierungen der IDispatch
Methoden bereit. Sie müssen nur Implementierungen für die Ereignisse bereitstellen, die Sie behandeln möchten.
IDispEventImpl
arbeitet in Verbindung mit der Ereignissenkenzuordnung in Ihrer Klasse, um Ereignisse an die entsprechende Handlerfunktion weiterzuleiten. So verwenden Sie diese Klasse:
Fügen Sie der Ereignissenkenzuordnung für jedes Objekt, das Sie behandeln möchten, ein SINK_ENTRY - oder SINK_ENTRY_EX Makro hinzu. Wenn Sie eine Basisklasse eines zusammengesetzten Steuerelements verwendenIDispEventImpl
, können Sie AtlAdviseSinkMap aufrufen, um die Verbindung mit den Ereignisquellen für alle Einträge in der Ereignissenkenzuordnung herzustellen und zu unterbrechen. Rufen Sie in anderen Fällen oder für größere Kontrolle DispEventAdvise auf, um die Verbindung zwischen dem Quellobjekt und der Basisklasse herzustellen. Rufen Sie DispEventUnadvise auf, um die Verbindung zu unterbrechen.
Sie müssen für jedes Objekt, für das Sie Ereignisse behandeln müssen, ableiten IDispEventImpl
(mit einem eindeutigen Wert für nID). Sie können die Basisklasse wiederverwenden, indem Sie die Bereitstellung für ein Quellobjekt aufheben und dann gegen ein anderes Quellobjekt beraten. Die maximale Anzahl von Quellobjekten, die von einem einzelnen Objekt gleichzeitig behandelt werden können, ist jedoch durch die Anzahl der IDispEventImpl
Basisklassen begrenzt.
IDispEventImpl
stellt die gleiche Funktionalität wie IDispEventSimpleImpl bereit, mit der Ausnahme, dass typinformationen über die Schnittstelle aus einer Typbibliothek abgerufen werden, anstatt sie als Zeiger auf eine _ATL_FUNC_INFO-Struktur bereitgestellt zu haben. Verwenden Sie diese Verwendung IDispEventSimpleImpl
, wenn Sie keine Typbibliothek haben, die die Ereignisschnittstelle beschreibt oder den mit der Typbibliothek verbundenen Aufwand vermeiden möchten.
Hinweis
IDispEventImpl
und IDispEventSimpleImpl
stellen eine eigene Implementierung bereit, mit der IUnknown::QueryInterface
jede IDispEventImpl
und IDispEventSimpleImpl
die Basisklasse als separate COM-Identität fungiert und gleichzeitig direkten Zugriff auf Klassenmember in Ihrem COM-Hauptobjekt ermöglicht.
Die CE ATL-Implementierung von ActiveX-Ereignissenken unterstützt nur Rückgabewerte vom Typ HRESULT oder void aus den Ereignishandlermethoden; ein anderer Rückgabewert wird nicht unterstützt, und sein Verhalten ist nicht definiert.
Weitere Informationen finden Sie unter Unterstützen von IDispEventImpl.
Vererbungshierarchie
_IDispEvent
_IDispEventLocator
IDispEventImpl
Anforderungen
Kopfzeile: atlcom.h
IDispEventImpl::GetFuncInfoFromId
Sucht den Funktionsindex für den angegebenen Verteilerbezeichner.
HRESULT GetFuncInfoFromId(
const IID& iid,
DISPID dispidMember,
LCID lcid,
_ATL_FUNC_INFO& info);
Parameter
iid
[in] Ein Verweis auf die ID der Funktion.
dispidMember
[in] Die Verteiler-ID der Funktion.
lcid
[in] Der Gebietsschemakontext der Funktions-ID.
info
[in] Die Struktur, die angibt, wie die Funktion aufgerufen wird.
Rückgabewert
Ein HRESULT-Standardwert.
IDispEventImpl::GetIDsOfNames
Ordnet ein einzelnes Element und einen optionalen Satz von Argumentnamen einem entsprechenden Satz ganzzahliger DISPIDs zu, die für nachfolgende Aufrufe von IDispatch::Invoke verwendet werden können.
STDMETHOD(GetIDsOfNames)(
REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgdispid);
Hinweise
Siehe "IDispatch::GetIDsOfNames" im Windows SDK.
IDispEventImpl::GetTypeInfo
Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können.
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
Hinweise
IDispEventImpl::GetTypeInfoCount
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
Hinweise
Siehe "IDispatch::GetTypeInfoCount " im Windows SDK.
IDispEventImpl::GetUserDefinedType
Ruft den grundlegenden Typ eines benutzerdefinierten Typs ab.
VARTYPE GetUserDefinedType(
ITypeInfo* pTI,
HREFTYPE hrt);
Parameter
Pti
[in] Ein Zeiger auf die ITypeInfo-Schnittstelle , die den benutzerdefinierten Typ enthält.
hrt
[in] Ein Handle für die Typbeschreibung, die abgerufen werden soll.
Rückgabewert
Der Typ der Variante.
Hinweise
Siehe ITypeInfo::GetRefTypeInfo.
IDispEventImpl::IDispEventImpl
Der Konstruktor. Speichert die Werte der Klassenvorlagenparameter plibid, pdiid, wMajor und wMinor.
IDispEventImpl();
IDispEventImpl::tihclass
Dieser Typedef ist eine Instanz des Klassenvorlagenparameters tihclass.
typedef tihclass _tihclass;
Hinweise
Standardmäßig ist CComTypeInfoHolder
die Klasse . CComTypeInfoHolder
verwaltet die Typinformationen für die Klasse.
Siehe auch
_ATL_FUNC_INFO-Struktur
IDispatchImpl-Klasse
IDispEventSimpleImpl-Klasse
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Klassenübersicht