Udostępnij przez


IDispEventImpl Klasa

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 .

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

plibid
Wskaźnik do biblioteki typów, która definiuje interfejs wysyłania wskazywany przez pdiid. Jeśli &GUID_NULLbiblioteka 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 elementu 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:

SINK_ENTRY Dodaj makro lub SINK_ENTRY_EX do mapy ujścia zdarzeń dla każdego zdarzenia dla każdego obiektu, który chcesz obsłużyć. W przypadku użycia IDispEventImpl jako klasy bazowej kontrolki złożonej można wywołać AtlAdviseSinkMap metodę ustanawiania i przerywania połączenia 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 w celu nawiązania połączenia 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 zapewnia tę samą funkcjonalność co IDispEventSimpleImplelement , z wyjątkiem pobierania informacji o typie interfejsu z biblioteki typów, a nie ich dostarczenia jako wskaźnika do _ATL_FUNC_INFO struktury. 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::QueryInterfaceIDispEventImpl 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 IDispEventImplprogramu .

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

iid
[in] Odwołanie do identyfikatora funkcji.

dispidMember
[in] Identyfikator wysyłania funkcji.

lcid
[in] Kontekst ustawień regionalnych identyfikatora funkcji.

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

Wartość zwracana

Wartość standardowa HRESULT .

IDispEventImpl::GetIDsOfNames

Mapuje pojedynczy element członkowski i opcjonalny zestaw nazw argumentów na odpowiedni zestaw liczb całkowitych DISPID, który może być używany w kolejnych wywołaniach metody 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);

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 plibidszablonu klasy , pdiid, wMajori wMinor.

IDispEventImpl();

IDispEventImpl::_tihclass

Ten typdef jest wystąpieniem parametru tihclassszablonu klasy .

typedef tihclass _tihclass;

Uwagi

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

Zobacz też

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