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 IDispEventImpl
klasy .
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
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