Dela via


IDispEventImpl-klass

Den här klassen tillhandahåller implementeringar av IDispatch metoderna.

Viktigt!

Den här klassen och dess medlemmar kan inte användas i program som körs i Windows Runtime.

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>

Parameterar

nID
En unik identifierare för källobjektet. När IDispEventImpl är basklassen för en sammansatt kontroll använder du resurs-ID:t för den önskade inneslutna kontrollen för den här parametern. I andra fall använder du ett godtyckligt positivt heltal.

T
Användarens klass, som härleds från IDispEventImpl.

pdiid
Pekaren till IID för händelsen dispinterface som implementeras av den här klassen. Det här gränssnittet måste definieras i typbiblioteket som anges av plibid, wMajoroch wMinor.

plibid
En pekare till typbiblioteket som definierar det dispatch-gränssnitt som pekas på av pdiid. Om &GUID_NULLläses typbiblioteket in från objektet som hämtar händelserna.

wMajor
Huvudversionen av typbiblioteket. Standardvärdet är 0.

wMinor
Delversionen av typbiblioteket. Standardvärdet är 0.

tihclass
Klassen som används för att hantera typinformationen för T. Standardvärdet är en klass av typen CComTypeInfoHolder. Du kan dock åsidosätta den här mallparametern genom att ange en klass av en annan typ än CComTypeInfoHolder.

Medlemmar

Offentliga typedefs

Namn Beskrivning
IDispEventImpl::_tihclass Klassen som används för att hantera typinformationen. Som standard . CComTypeInfoHolder

Offentliga konstruktorer

Namn Beskrivning
IDispEventImpl::IDispEventImpl Konstruktorn.

Offentliga metoder

Namn Beskrivning
IDispEventImpl::GetFuncInfoFromId Letar upp funktionsindexet för den angivna dispatch-identifieraren.
IDispEventImpl::GetIDsOfNames Mappar en enskild medlem och en valfri uppsättning argumentnamn till en motsvarande uppsättning heltal DISPID.
IDispEventImpl::GetTypeInfo Hämtar typinformationen för ett objekt.
IDispEventImpl::GetTypeInfoCount Hämtar antalet typinformationsgränssnitt.
IDispEventImpl::GetUserDefinedType Hämtar den grundläggande typen av en användardefinierad typ.

Anmärkningar

IDispEventImpl tillhandahåller ett sätt att implementera en händelse som inte används utan att du behöver ange implementeringskod för varje metod/händelse i gränssnittet. IDispEventImpl tillhandahåller implementeringar av IDispatch metoderna. Du behöver bara tillhandahålla implementeringar för de händelser som du är intresserad av att hantera.

IDispEventImpl fungerar tillsammans med mappningen för händelsemottagaren i klassen för att dirigera händelser till lämplig hanteringsfunktion. Så här använder du den här klassen:

Lägg till ett makro eller SINK_ENTRY ett SINK_ENTRY_EX makro på kartan för händelsemottagaren för varje händelse på varje objekt som du vill hantera. När du använder IDispEventImpl som basklass för en sammansatt kontroll kan du anropa AtlAdviseSinkMap för att upprätta och bryta anslutningen till händelsekällorna för alla poster i händelsemottagarens karta. I andra fall, eller för större kontroll, anropar DispEventAdvise du för att upprätta anslutningen mellan källobjektet och basklassen. Anropa DispEventUnadvise för att bryta anslutningen.

Du måste härleda från IDispEventImpl (med ett unikt värde för nID) för varje objekt som du behöver hantera händelser för. Du kan återanvända basklassen genom att ta bort konfigurationen mot ett källobjekt och sedan avråda från ett annat källobjekt, men det maximala antalet källobjekt som kan hanteras av ett enskilt objekt i taget begränsas av antalet IDispEventImpl basklasser.

IDispEventImpl innehåller samma funktioner som IDispEventSimpleImpl, förutom att det hämtar typinformation om gränssnittet från ett typbibliotek i stället för att det tillhandahålls som en pekare till en _ATL_FUNC_INFO struktur. Använd IDispEventSimpleImpl när du inte har ett typbibliotek som beskriver händelsegränssnittet eller vill undvika de kostnader som är kopplade till att använda typbiblioteket.

Anmärkning

IDispEventImpl och IDispEventSimpleImpl ge sin egen implementering av IUnknown::QueryInterface att göra det möjligt för varje IDispEventImpl basklass IDispEventSimpleImpl att fungera som en separat COM-identitet samtidigt som den ger direkt åtkomst till klassmedlemmar i ditt huvudsakliga COM-objekt.

CE ATL-implementering av ActiveX-händelsemottagare stöder endast returvärden av typen HRESULT eller void från dina händelsehanterarmetoder. Alla andra returvärden stöds inte och dess beteende är odefinierat.

Mer information finns i Stöd IDispEventImplför .

Arvshierarki

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

IDispEventImpl

Kravspecifikation

rubrik:atlcom.h

IDispEventImpl::GetFuncInfoFromId

Letar upp funktionsindexet för den angivna dispatch-identifieraren.

HRESULT GetFuncInfoFromId(
    const IID& iid,
    DISPID dispidMember,
    LCID lcid,
    _ATL_FUNC_INFO& info);

Parameterar

iid
[i] En referens till funktionens ID.

dispidMember
[i] Funktionens sändnings-ID.

lcid
[i] Språkkontexten för funktions-ID:t.

info
[i] Strukturen som anger hur funktionen anropas.

Returvärde

Ett standardvärde HRESULT .

IDispEventImpl::GetIDsOfNames

Mappar en enskild medlem och en valfri uppsättning argumentnamn till en motsvarande uppsättning heltal DISPID, som kan användas vid efterföljande anrop till IDispatch::Invoke.

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

Anmärkningar

Se IDispatch::GetIDsOfNames i Windows SDK.

IDispEventImpl::GetTypeInfo

Hämtar typinformationen för ett objekt, som sedan kan användas för att hämta typinformationen för ett gränssnitt.

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

IDispEventImpl::GetTypeInfoCount

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Anmärkningar

Se IDispatch::GetTypeInfoCount i Windows SDK.

IDispEventImpl::GetUserDefinedType

Hämtar den grundläggande typen av en användardefinierad typ.

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

Parameterar

pTI
[i] En pekare till gränssnittet ITypeInfo som innehåller den användardefinierade typen.

hrt
[i] Ett handtag till den typbeskrivning som ska hämtas.

Returvärde

Typ av variant.

Anmärkningar

Se även ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

Konstruktorn. Lagrar värdena för klassmallsparametrarna plibid, pdiid, wMajoroch wMinor.

IDispEventImpl();

IDispEventImpl::_tihclass

Den här typedef är en instans av klassmallparametern tihclass.

typedef tihclass _tihclass;

Anmärkningar

Som standard är CComTypeInfoHolderklassen . CComTypeInfoHolder hanterar typinformationen för klassen.

Se även

_ATL_FUNC_INFO Struktur
IDispatchImpl klass
IDispEventSimpleImpl klass
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
översikt över -klass