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
IDispEventImpl
und 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 pdiid
der 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