Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
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