IDispEventSimpleImpl-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse biedt implementaties van de IDispatch methoden, zonder typegegevens op te halen uit een typebibliotheek.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

template <UINT nID, class T, const IID* pdiid>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>

Parameterwaarden

nID
Een unieke id voor het bronobject. Wanneer IDispEventSimpleImpl is de basisklasse voor een samengesteld besturingselement, gebruikt u de resource-id van het gewenste ingesloten besturingselement voor deze parameter. In andere gevallen gebruikt u een willekeurig positief geheel getal.

T
De klasse van de gebruiker, die is afgeleid van IDispEventSimpleImpl.

pdiid
De aanwijzer naar de IID van de gebeurtenisdispinterface die door deze klasse is geïmplementeerd.

Leden

Openbare methoden

Naam Description
IDispEventSimpleImpl::Advise Hiermee maakt u een verbinding met de standaard gebeurtenisbron.
IDispEventSimpleImpl::DispEventAdvise Hiermee wordt een verbinding tot stand gebracht met de gebeurtenisbron.
IDispEventSimpleImpl::DispEventUnadvise De verbinding met de gebeurtenisbron wordt verbroken.
IDispEventSimpleImpl::GetIDsOfNames Retourneert E_NOTIMPL.
IDispEventSimpleImpl::GetTypeInfo Retourneert E_NOTIMPL.
IDispEventSimpleImpl::GetTypeInfoCount Retourneert E_NOTIMPL.
IDispEventSimpleImpl::Invoke Roept de gebeurtenis-handlers aan die worden vermeld in de gebeurtenissinktoewijzing.
IDispEventSimpleImpl::Unadvise De verbinding met de standaard gebeurtenisbron wordt verbroken.

Opmerkingen

IDispEventSimpleImpl biedt een manier om een gebeurtenisdispinterface te implementeren zonder dat u implementatiecode hoeft op te geven voor elke methode/gebeurtenis op die interface. IDispEventSimpleImpl biedt implementaties van de IDispatch methoden. U hoeft alleen implementaties op te geven voor de gebeurtenissen die u wilt verwerken.

IDispEventSimpleImpl werkt in combinatie met de gebeurtenissinktoewijzing in uw klasse om gebeurtenissen naar de juiste handlerfunctie te routeren. Ga als volgt te werk om deze klasse te gebruiken:

  • Voeg een SINK_ENTRY_INFO macro toe aan de gebeurtenissinktoewijzing voor elke gebeurtenis op elk object dat u wilt verwerken.

  • Informatie over het type opgeven voor elke gebeurtenis door een aanwijzer door te geven aan een _ATL_FUNC_INFO structuur als parameter voor elke vermelding. Op het x86-platform moet de _ATL_FUNC_INFO.cc waarde worden CC_CDECL met de callback-functieaanroepmethode van __stdcall.

  • Roep DispEventAdvise aan om de verbinding tot stand te brengen tussen het bronobject en de basisklasse.

  • Roep DispEventUnadvise aan om de verbinding te verbreken.

U moet afleiden van IDispEventSimpleImpl (met behulp van een unieke waarde voor nID) voor elk object waarvoor u gebeurtenissen moet verwerken. U kunt de basisklasse opnieuw gebruiken door het niet-gebruiken van één bronobject en vervolgens af te raden tegen een ander bronobject, maar het maximum aantal bronobjecten dat door één object tegelijk kan worden verwerkt, wordt beperkt door het aantal IDispEventSimpleImpl basisklassen.

IDispEventSimplImpl biedt dezelfde functionaliteit als IDispEventImpl, behalve dat er geen typegegevens over de interface van een typebibliotheek worden opgehaald. De wizards genereren alleen code op IDispEventImplbasis van, maar u kunt de code handmatig toevoegen IDispEventSimpleImpl . Gebruik IDispEventSimpleImpl deze functie als u geen typebibliotheek hebt waarin de gebeurtenisinterface wordt beschreven of als u de overhead wilt voorkomen die is gekoppeld aan het gebruik van de typebibliotheek.

Opmerking

IDispEventImpl en IDispEventSimpleImpl bieden hun eigen implementatie van het inschakelen van IUnknown::QueryInterface elke IDispEventImpl of IDispEventSimpleImpl basisklasse om te fungeren als een afzonderlijke COM-identiteit, terwijl u nog steeds directe toegang tot klasseleden in uw hoofd-COM-object toestaat.

CE ATL-implementatie van ActiveX-gebeurtenissinks ondersteunt alleen retourwaarden van het type HRESULT of ongeldigheid van uw gebeurtenis-handlermethoden; een andere retourwaarde wordt niet ondersteund en het gedrag ervan is niet gedefinieerd.

Zie Ondersteunende IDispEventImpl voor meer informatie.

Overnamehiërarchie

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

Requirements

Koptekst: atlcom.h

IDispEventSimpleImpl::Advise

Roep deze methode aan om een verbinding tot stand te brengen met de gebeurtenisbron die wordt vertegenwoordigd door pUnk.

HRESULT Advise(IUnknown* pUnk);

Parameterwaarden

Punk
[in] Een aanwijzer naar de IUnknown interface van het gebeurtenisbronobject.

Retourwaarde

S_OK of een fout HRESULT-waarde.

Opmerkingen

Zodra de verbinding tot stand is gebracht, worden gebeurtenissen die vanuit pUnk worden geactiveerd, doorgestuurd naar handlers in uw klasse via de gebeurtenissinktoewijzing.

Opmerking

Als uw klas is afgeleid van meerdere IDispEventSimpleImpl klassen, moet u aanroepen naar deze methode ondubbelzinnig maken door het bereik van de aanroep te beperken met de specifieke basisklasse waarin u geïnteresseerd bent.

Advise brengt een verbinding tot stand met de standaardgebeurtenisbron. Hiermee wordt de IID van de standaardgebeurtenisbron van het object opgehaald, zoals bepaald door AtlGetObjectSourceInterface.

IDispEventSimpleImpl::D ispEventAdvise

Roep deze methode aan om een verbinding tot stand te brengen met de gebeurtenisbron die wordt vertegenwoordigd door pUnk.

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

Parameterwaarden

Punk
[in] Een aanwijzer naar de IUnknown interface van het gebeurtenisbronobject.

piid
Een aanwijzer naar de IID van het gebeurtenisbronobject.

Retourwaarde

S_OK of een fout HRESULT-waarde.

Opmerkingen

Vervolgens worden gebeurtenissen die vanuit pUnk worden geactiveerd, doorgestuurd naar handlers in uw klasse via de gebeurtenissinktoewijzing.

Opmerking

Als uw klas is afgeleid van meerdere IDispEventSimpleImpl klassen, moet u aanroepen naar deze methode ondubbelzinnig maken door het bereik van de aanroep te beperken met de specifieke basisklasse waarin u geïnteresseerd bent.

DispEventAdvise brengt een verbinding tot stand met de gebeurtenisbron die is opgegeven in pdiid.

IDispEventSimpleImpl::D ispEventUnadvise

Hiermee wordt de verbinding verbroken met de gebeurtenisbron die wordt vertegenwoordigd door pUnk.

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

Parameterwaarden

Punk
[in] Een aanwijzer naar de IUnknown interface van het gebeurtenisbronobject.

piid
Een aanwijzer naar de IID van het gebeurtenisbronobject.

Retourwaarde

S_OK of een fout HRESULT-waarde.

Opmerkingen

Zodra de verbinding is verbroken, worden gebeurtenissen niet meer doorgestuurd naar de handlerfuncties die worden vermeld in de gebeurtenissinktoewijzing.

Opmerking

Als uw klas is afgeleid van meerdere IDispEventSimpleImpl klassen, moet u aanroepen naar deze methode ondubbelzinnig maken door het bereik van de aanroep te beperken met de specifieke basisklasse waarin u geïnteresseerd bent.

DispEventAdvise breekt een verbinding die tot stand is gebracht met de gebeurtenisbron die is opgegeven in pdiid.

IDispEventSimpleImpl::GetIDsOfNames

Deze implementatie van IDispatch::GetIDsOfNames retourneert E_NOTIMPL.

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

Opmerkingen

Zie IDispatch::GetIDsOfNames in de Windows SDK.

IDispEventSimpleImpl::GetTypeInfo

Deze implementatie van IDispatch::GetTypeInfo retourneert E_NOTIMPL.

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

Opmerkingen

Zie IDispatch::GetTypeInfo in de Windows SDK.

IDispEventSimpleImpl::GetTypeInfoCount

Deze implementatie van IDispatch::GetTypeInfoCount retourneert E_NOTIMPL.

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

Opmerkingen

Zie IDispatch::GetTypeInfoCount in de Windows SDK.

IDispEventSimpleImpl::Invoke

Deze implementatie van IDispatch::Invoke roept de gebeurtenis-handlers aan die worden vermeld in de gebeurtenissinktoewijzing.

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

Opmerkingen

Zie IDispatch::Invoke.

IDispEventSimpleImpl::Unadvise

Hiermee wordt de verbinding verbroken met de gebeurtenisbron die wordt vertegenwoordigd door pUnk.

HRESULT Unadvise(IUnknown* pUnk);

Parameterwaarden

Punk
[in] Een aanwijzer naar de IUnknown interface van het gebeurtenisbronobject.

Retourwaarde

S_OK of een fout HRESULT-waarde.

Opmerkingen

Zodra de verbinding is verbroken, worden gebeurtenissen niet meer doorgestuurd naar de handlerfuncties die worden vermeld in de gebeurtenissinktoewijzing.

Opmerking

Als uw klas is afgeleid van meerdere IDispEventSimpleImpl klassen, moet u aanroepen naar deze methode ondubbelzinnig maken door het bereik van de aanroep te beperken met de specifieke basisklasse waarin u geïnteresseerd bent.

Unadvise breekt een verbinding die tot stand is gebracht met de standaardgebeurtenisbron die is opgegeven in pdiid.

Unavise breekt een verbinding met de standaardgebeurtenisbron. Hiermee wordt de IID van de standaardgebeurtenisbron van het object opgehaald, zoals bepaald door AtlGetObjectSourceInterface.

Zie ook

_ATL_FUNC_INFO structuur
IDispatchImpl-klasse
Klasse IDispEventImpl
SINK_ENTRY_INFO
Overzicht van klassen