Udostępnij za pośrednictwem


Klasa IDispEventImpl

Ta klasa zawiera implementacje IDispatch metod.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

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>

Parametry

Nid
Unikatowy identyfikator obiektu źródłowego. Gdy IDispEventImpl jest klasą bazową dla kontrolki złożonej, użyj identyfikatora zasobu żądanej zawartej kontrolki dla tego parametru. W innych przypadkach użyj dowolnej dodatniej liczby całkowitej.

T
Klasa użytkownika, która pochodzi z IDispEventImplklasy .

identyfikator pdiid
Wskaźnik do identyfikatora IID zdarzenia dispinterface zaimplementowany przez tę klasę. Ten interfejs musi być zdefiniowany w bibliotece typów oznaczonej przez plibid, wMajor i wMinor.

plibid
Wskaźnik do biblioteki typów, która definiuje interfejs wysyłania wskazywany przez identyfikator pdiid. Jeśli GUID_NULL, biblioteka typów zostanie załadowana z obiektu określania źródła zdarzeń.

wMajor
Główna wersja biblioteki typów. Wartość domyślna to 0.

wMinor
Wersja pomocnicza biblioteki typów. Wartość domyślna to 0.

tihclass
Klasa używana do zarządzania informacjami o typie dla języka T. Wartość domyślna to klasa typu CComTypeInfoHolder; można jednak zastąpić ten parametr szablonu, podając klasę typu innego niż CComTypeInfoHolder.

Elementy członkowskie

Definicje typów publicznych

Nazwa/nazwisko opis
IDispEventImpl::_tihclass Klasa używana do zarządzania informacjami o typie. Domyślnie . CComTypeInfoHolder

Konstruktory publiczne

Nazwa/nazwisko opis
IDispEventImpl::IDispEventImpl Konstruktor.

Metody publiczne

Nazwa/nazwisko opis
IDispEventImpl::GetFuncInfoFromId Lokalizuje indeks funkcji dla określonego identyfikatora wysyłania.
IDispEventImpl::GetIDsOfNames Mapuje pojedynczy element członkowski i opcjonalny zestaw nazw argumentów na odpowiadający zestaw liczb całkowitych DISPID.
IDispEventImpl::GetTypeInfo Pobiera informacje o typie obiektu.
IDispEventImpl::GetTypeInfoCount Pobiera liczbę interfejsów informacyjnych typu.
IDispEventImpl::GetUserDefinedType Pobiera podstawowy typ typu zdefiniowanego przez użytkownika.

Uwagi

IDispEventImpl zapewnia sposób implementowania zdarzenia dispinterface bez konieczności podawania kodu implementacji dla każdej metody/zdarzenia w tym interfejsie. IDispEventImpl udostępnia implementacje IDispatch metod. Wystarczy dostarczyć implementacje dla zdarzeń, które cię interesują.

IDispEventImpl działa w połączeniu z mapą ujścia zdarzeń w klasie w celu kierowania zdarzeń do odpowiedniej funkcji obsługi. Aby użyć tej klasy:

Dodaj makro SINK_ENTRY lub SINK_ENTRY_EX do mapy ujścia zdarzeń dla każdego zdarzenia na każdym obiekcie, który chcesz obsłużyć. W przypadku użycia IDispEventImpl jako klasy bazowej kontrolki złożonej można wywołać metodę AtlAdviseSinkMap , aby ustanowić i przerwać połączenie ze źródłami zdarzeń dla wszystkich wpisów na mapie ujścia zdarzeń. W innych przypadkach lub w przypadku większej kontroli wywołaj metodę DispEventAdvise , aby ustanowić połączenie między obiektem źródłowym a klasą bazową. Wywołaj metodę DispEventUnadvise , aby przerwać połączenie.

Musisz pochodzić z IDispEventImpl (używając unikatowej wartości dla nID) dla każdego obiektu, dla którego należy obsługiwać zdarzenia. Klasę bazową można ponownie użyć, nienadzorując względem jednego obiektu źródłowego, a następnie doradzając innym obiektom źródłowym, ale maksymalna liczba obiektów źródłowych, które mogą być obsługiwane przez pojedynczy obiekt w tym samym czasie, jest ograniczona przez liczbę IDispEventImpl klas bazowych.

IDispEventImpl Udostępnia te same funkcje co IDispEventSimpleImpl, z wyjątkiem pobierania informacji o typie o interfejsie z biblioteki typów, a nie dostarczenia go jako wskaźnika do struktury _ATL_FUNC_INFO . Użyj IDispEventSimpleImpl polecenia , jeśli nie masz biblioteki typów opisującej interfejs zdarzenia lub chcesz uniknąć obciążenia związanego z używaniem biblioteki typów.

Uwaga

IDispEventImpl i IDispEventSimpleImpl zapewniają własną implementację umożliwienia każdemu IUnknown::QueryInterface IDispEventImpl i IDispEventSimpleImpl klasie bazowej działania jako oddzielnej tożsamości COM, jednocześnie umożliwiając bezpośredni dostęp do składowych klas w głównym obiekcie COM.

Implementacja CE ATL ujścia zdarzeń ActiveX obsługuje tylko wartości zwracane typu HRESULT lub void z metod obsługi zdarzeń; każda inna wartość zwracana jest nieobsługiwana, a jego zachowanie jest niezdefiniowane.

Aby uzyskać więcej informacji, zobacz Obsługa protokołu IDispEventImpl.

Hierarchia dziedziczenia

_IDispEvent

_IDispEventLocator

IDispEventSimpleImpl

IDispEventImpl

Wymagania

Nagłówek: atlcom.h

IDispEventImpl::GetFuncInfoFromId

Lokalizuje indeks funkcji dla określonego identyfikatora wysyłania.

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

Parametry

identyfikator iid
[in] Odwołanie do identyfikatora funkcji.

dispidMember
[in] Identyfikator wysyłania funkcji.

lcid
[in] Kontekst ustawień regionalnych identyfikatora funkcji.

Informacji
[in] Struktura wskazująca sposób wywoływanej funkcji.

Wartość zwracana

Standardowa wartość HRESULT.

IDispEventImpl::GetIDsOfNames

Mapuje pojedynczy element członkowski i opcjonalny zestaw nazw argumentów na odpowiedni zestaw liczb całkowitych DISPID, które mogą być używane w kolejnych wywołaniach do IDispatch::Invoke.

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

Uwagi

Zobacz IDispatch::GetIDsOfNames w zestawie Windows SDK.

IDispEventImpl::GetTypeInfo

Pobiera informacje o typie dla obiektu, których następnie można użyć do uzyskania informacji o typie interfejsu.

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

Uwagi

IDispEventImpl::GetTypeInfoCount

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Uwagi

Zobacz IDispatch::GetTypeInfoCount w zestawie Windows SDK.

IDispEventImpl::GetUserDefinedType

Pobiera podstawowy typ typu zdefiniowanego przez użytkownika.

VARTYPE GetUserDefinedType(
    ITypeInfo* pTI,
    HREFTYPE hrt);

Parametry

Pti
[in] Wskaźnik do interfejsu ITypeInfo zawierającego typ zdefiniowany przez użytkownika.

hrt
[in] Dojście do opisu typu do pobrania.

Wartość zwracana

Typ wariantu.

Uwagi

Zobacz ITypeInfo::GetRefTypeInfo.

IDispEventImpl::IDispEventImpl

Konstruktor. Przechowuje wartości parametrów szablonu klasy plibid, pdiid, wMajor i wMinor.

IDispEventImpl();

IDispEventImpl::tihclass

Ten typdef to wystąpienie parametru szablonu klasy tihclass.

typedef tihclass _tihclass;

Uwagi

Domyślnie klasa to CComTypeInfoHolder. CComTypeInfoHolder zarządza informacjami o typie dla klasy.

Zobacz też

Struktura _ATL_FUNC_INFO
Klasa IDispatchImpl
Klasa IDispEventSimpleImpl
SINK_ENTRY
SINK_ENTRY_EX
SINK_ENTRY_INFO
Omówienie klasy