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.

Mitglieder

Ö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 Karten ein einzelnes Element und einen optionalen Satz von Argumentnamen zu einem entsprechenden Satz ganzzahliger DISPIDs.
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

IDispEventImplund IDispEventSimpleImpl stellen eine eigene Implementierung bereit, mit der IUnknown::QueryInterface jede IDispEventImpl und IDispEventSimpleImpl jede Basisklasse als separate COM-Identität fungieren kann und gleichzeitig direkten Zugriff auf Klassenmember in Ihrem Standard COM-Objekt 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

IDispEventSimpleImpl

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

Karten ein einzelnes Element und einen optionalen Satz von Argumentnamen zu einem entsprechenden Satz ganzzahliger DISPIDs, die für nachfolgende Aufrufe verwendet werden könnenIDispatch::Invoke.

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 CComTypeInfoHolderdie 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