Freigeben über


IDispEventSimpleImpl-Klasse

Diese Klasse stellt Implementierungen der IDispatch Methoden bereit, ohne Typinformationen aus einer Typbibliothek abzurufen.

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>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>

Parameter

Nid
Ein eindeutiger Bezeichner für das Quellobjekt. Wenn IDispEventSimpleImpl 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 IDispEventSimpleImpl.

pdiid
Der Zeiger auf die IID der ereignisdispinterface, die von dieser Klasse implementiert wird.

Member

Öffentliche Methoden

Name Beschreibung
IDispEventSimpleImpl::Advise Stellt eine Verbindung mit der Standardereignisquelle her.
IDispEventSimpleImpl::D ispEventAdvise Stellt eine Verbindung mit der Ereignisquelle her.
IDispEventSimpleImpl::D ispEventUnadvise Hebt die Verbindung mit der Ereignisquelle auf.
IDispEventSimpleImpl::GetIDsOfNames Gibt E_NOTIMPL zurück.
IDispEventSimpleImpl::GetTypeInfo Gibt E_NOTIMPL zurück.
IDispEventSimpleImpl::GetTypeInfoCount Gibt E_NOTIMPL zurück.
IDispEventSimpleImpl::Invoke Ruft die ereignishandler auf, die in der Ereignissenkenzuordnung aufgeführt sind.
IDispEventSimpleImpl::Unadvise Hebt die Verbindung mit der Standardereignisquelle auf.

Hinweise

IDispEventSimpleImpl bietet eine Möglichkeit zum Implementieren einer Ereignisdispinterface, ohne dass Sie Implementierungscode für jede Methode/jedes Ereignis auf dieser Schnittstelle bereitstellen müssen. IDispEventSimpleImpl stellt Implementierungen der IDispatch Methoden bereit. Sie müssen nur Implementierungen für die Ereignisse bereitstellen, die Sie behandeln möchten.

IDispEventSimpleImpl 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 Ereignissenkezuordnung für jedes Zu behandelnde Objekt ein SINK_ENTRY_INFO Makro hinzu.

  • Geben Sie Typinformationen für jedes Ereignis an, indem Sie einen Zeiger an eine _ATL_FUNC_INFO Struktur als Parameter an jeden Eintrag übergeben. Auf der x86-Plattform muss der _ATL_FUNC_INFO.cc Wert mit der Rückruffunktionsaufrufmethode __stdcall CC_CDECL werden.

  • Rufen Sie 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 IDispEventSimpleImpl (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 IDispEventSimpleImpl Basisklassen begrenzt.

IDispEventSimplImpl stellt die gleiche Funktionalität wie IDispEventImpl bereit, mit der Ausnahme, dass keine Typinformationen über die Schnittstelle aus einer Typbibliothek abgerufen werden. Die Assistenten generieren Code nur basierend auf IDispEventImpl, aber Sie können IDispEventSimpleImpl den Code manuell hinzufügen. Verwenden Sie diese Option IDispEventSimpleImpl , wenn Sie nicht über eine Typbibliothek verfügen, 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 oder IDispEventSimpleImpl jede IDispEventImpl 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

IDispEventSimpleImpl

Anforderungen

Kopfzeile: atlcom.h

IDispEventSimpleImpl::Advise

Rufen Sie diese Methode auf, um eine Verbindung mit der durch pUnk dargestellten Ereignisquelle herzustellen.

HRESULT Advise(IUnknown* pUnk);

Parameter

Punk
[in] Ein Zeiger auf die IUnknown Schnittstelle des Ereignisquellobjekts.

Rückgabewert

S_OK oder HRESULT-Fehlerwert.

Hinweise

Sobald die Verbindung hergestellt wurde, werden ereignisse, die von pUnk ausgelöst werden, über die Ereignissenkenzuordnung an Handler in Ihrer Klasse weitergeleitet.

Hinweis

Wenn Ihre Klasse von mehreren IDispEventSimpleImpl Klassen abgeleitet wird, müssen Sie mehrdeutige Aufrufe dieser Methode aufheben, indem Sie den Aufruf mit der jeweiligen Basisklasse festlegen, an der Sie interessiert sind.

Advise stellt eine Verbindung mit der Standardereignisquelle her, ruft sie die IID der Standardereignisquelle des Objekts ab, wie von AtlGetObjectSourceInterface bestimmt.

IDispEventSimpleImpl::D ispEventAdvise

Rufen Sie diese Methode auf, um eine Verbindung mit der durch pUnk dargestellten Ereignisquelle herzustellen.

HRESULT DispEventAdvise(IUnknown* pUnk  const IID* piid);

Parameter

Punk
[in] Ein Zeiger auf die IUnknown Schnittstelle des Ereignisquellobjekts.

piid
Ein Zeiger auf die IID des Ereignisquellobjekts.

Rückgabewert

S_OK oder HRESULT-Fehlerwert.

Hinweise

Anschließend werden ereignisse, die von pUnk ausgelöst werden, über die Ereignissenkenzuordnung an Handler in Ihrer Klasse weitergeleitet.

Hinweis

Wenn Ihre Klasse von mehreren IDispEventSimpleImpl Klassen abgeleitet wird, müssen Sie mehrdeutige Aufrufe dieser Methode aufheben, indem Sie den Aufruf mit der jeweiligen Basisklasse festlegen, an der Sie interessiert sind.

DispEventAdvise stellt eine Verbindung mit der in pdiid.

IDispEventSimpleImpl::D ispEventUnadvise

Hebt die Verbindung mit der ereignisquelle auf, die durch pUnk dargestellt wird.

HRESULT DispEventUnadvise(IUnknown* pUnk  const IID* piid);

Parameter

Punk
[in] Ein Zeiger auf die IUnknown Schnittstelle des Ereignisquellobjekts.

piid
Ein Zeiger auf die IID des Ereignisquellobjekts.

Rückgabewert

S_OK oder HRESULT-Fehlerwert.

Hinweise

Sobald die Verbindung unterbrochen wurde, werden Ereignisse nicht mehr an die Handlerfunktionen weitergeleitet, die in der Ereignissenkenzuordnung aufgeführt sind.

Hinweis

Wenn Ihre Klasse von mehreren IDispEventSimpleImpl Klassen abgeleitet wird, müssen Sie mehrdeutige Aufrufe dieser Methode aufheben, indem Sie den Aufruf mit der jeweiligen Basisklasse festlegen, an der Sie interessiert sind.

DispEventAdvise bricht eine Verbindung auf, die mit der in pdiidder Ereignisquelle angegebenen.

IDispEventSimpleImpl::GetIDsOfNames

Diese Implementierung von IDispatch::GetIDsOfNames Rückgaben E_NOTIMPL.

STDMETHOD(GetIDsOfNames)(
    REFIID /* riid */,
    LPOLESTR* /* rgszNames */,
    UINT /* cNames */,
    LCID /* lcid */,
    DISPID* /* rgdispid */);

Hinweise

Siehe "IDispatch::GetIDsOfNames" im Windows SDK.

IDispEventSimpleImpl::GetTypeInfo

Diese Implementierung von IDispatch::GetTypeInfo Rückgaben E_NOTIMPL.

STDMETHOD(GetTypeInfo)(
    UINT /* itinfo */,
    LCID /* lcid */,
    ITypeInfo** /* pptinfo */);

Hinweise

Siehe "IDispatch::GetTypeInfo " im Windows SDK.

IDispEventSimpleImpl::GetTypeInfoCount

Diese Implementierung von IDispatch::GetTypeInfoCount Rückgaben E_NOTIMPL.

STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);

Hinweise

Siehe "IDispatch::GetTypeInfoCount " im Windows SDK.

IDispEventSimpleImpl::Invoke

Diese Implementierung von IDispatch::Invoke Aufrufen der Ereignishandler, die in der Ereignissenkenzuordnung aufgeführt sind.

STDMETHOD(Invoke)(
    DISPID dispidMember,
    REFIID /* riid */,
    LCID lcid,
    WORD /* wFlags */,
    DISPPARMS* pdispparams,
    VARIANT* pvarResult,
    EXCEPINFO* /* pexcepinfo */,
    UINT* /* puArgErr */);

Hinweise

Siehe "IDispatch::Invoke".

IDispEventSimpleImpl::Unadvise

Hebt die Verbindung mit der ereignisquelle auf, die durch pUnk dargestellt wird.

HRESULT Unadvise(IUnknown* pUnk);

Parameter

Punk
[in] Ein Zeiger auf die IUnknown Schnittstelle des Ereignisquellobjekts.

Rückgabewert

S_OK oder HRESULT-Fehlerwert.

Hinweise

Sobald die Verbindung unterbrochen wurde, werden Ereignisse nicht mehr an die Handlerfunktionen weitergeleitet, die in der Ereignissenkenzuordnung aufgeführt sind.

Hinweis

Wenn Ihre Klasse von mehreren IDispEventSimpleImpl Klassen abgeleitet wird, müssen Sie mehrdeutige Aufrufe dieser Methode aufheben, indem Sie den Aufruf mit der jeweiligen Basisklasse festlegen, an der Sie interessiert sind.

Unadvise bricht eine Verbindung auf, die mit der standardereignisquelle hergestellt wurde, die in pdiid.

Unavise bricht eine Verbindung mit der Standardereignisquelle auf, es ruft die IID der Standardereignisquelle des Objekts ab, wie durch AtlGetObjectSourceInterface bestimmt.

Siehe auch

_ATL_FUNC_INFO-Struktur
IDispatchImpl-Klasse
IDispEventImpl-Klasse
SINK_ENTRY_INFO
Klassenübersicht