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 udostępnia implementacje IDispatch metod bez uzyskiwania informacji o typie z biblioteki typów.
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>
class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
Parametry
Nid
Unikatowy identyfikator obiektu źródłowego. Gdy IDispEventSimpleImpl 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 IDispEventSimpleImplklasy .
identyfikator pdiid
Wskaźnik do identyfikatora IID zdarzenia dispinterface zaimplementowany przez tę klasę.
Elementy członkowskie
Metody publiczne
| Nazwa/nazwisko | opis |
|---|---|
| IDispEventSimpleImpl::Advise | Ustanawia połączenie z domyślnym źródłem zdarzeń. |
| IDispEventSimpleImpl::D ispEventAdvise | Ustanawia połączenie ze źródłem zdarzeń. |
| IDispEventSimpleImpl::D ispEventUnadvise | Przerywa połączenie ze źródłem zdarzeń. |
| IDispEventSimpleImpl::GetIDsOfNames | Zwraca E_NOTIMPL. |
| IDispEventSimpleImpl::GetTypeInfo | Zwraca E_NOTIMPL. |
| IDispEventSimpleImpl::GetTypeInfoCount | Zwraca E_NOTIMPL. |
| IDispEventSimpleImpl::Invoke | Wywołuje programy obsługi zdarzeń wymienione na mapie ujścia zdarzeń. |
| IDispEventSimpleImpl::Unadvise | Przerywa połączenie z domyślnym źródłem zdarzeń. |
Uwagi
IDispEventSimpleImpl zapewnia sposób implementowania zdarzenia dispinterface bez konieczności podawania kodu implementacji dla każdej metody/zdarzenia w tym interfejsie. IDispEventSimpleImpl udostępnia implementacje IDispatch metod. Wystarczy dostarczyć implementacje dla zdarzeń, które cię interesują.
IDispEventSimpleImpl 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_INFO do mapy ujścia zdarzeń dla każdego zdarzenia dla każdego obiektu, który chcesz obsłużyć.
Podaj informacje o typie dla każdego zdarzenia, przekazując wskaźnik do struktury _ATL_FUNC_INFO jako parametr do każdego wpisu. Na platformie
_ATL_FUNC_INFO.ccx86 wartość musi być CC_CDECL z wywołaniem zwrotnym funkcji wywołującej metodę __stdcall.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 IDispEventSimpleImpl (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ę IDispEventSimpleImpl klas bazowych.
IDispEventSimplImpl udostępnia te same funkcje co IDispEventImpl, z wyjątkiem tego, że nie uzyskuje informacji o typie interfejsu z biblioteki typów. Kreatory generują kod tylko na IDispEventImplpodstawie elementu , ale można go użyć IDispEventSimpleImpl , dodając kod ręcznie. 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 lub 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
Wymagania
Nagłówek: atlcom.h
IDispEventSimpleImpl::Advise
Wywołaj tę metodę, aby nawiązać połączenie ze źródłem zdarzeń reprezentowanym przez element pUnk.
HRESULT Advise(IUnknown* pUnk);
Parametry
Punk
[in] Wskaźnik do IUnknown interfejsu obiektu źródła zdarzeń.
Wartość zwracana
S_OK lub jakąkolwiek wartość HRESULT błędu.
Uwagi
Po nawiązaniu połączenia zdarzenia wyzwalane z elementu pUnk będą kierowane do programów obsługi w klasie za pomocą mapy ujścia zdarzeń.
Uwaga
Jeśli klasa pochodzi z wielu IDispEventSimpleImpl klas, należy uściślać wywołania tej metody, określając zakres wywołania z określoną klasą bazową, którą cię interesują.
Advise Ustanawia połączenie z domyślnym źródłem zdarzeń, pobiera identyfikator IID domyślnego źródła zdarzeń obiektu określonego przez AtlGetObjectSourceInterface.
IDispEventSimpleImpl::D ispEventAdvise
Wywołaj tę metodę, aby nawiązać połączenie ze źródłem zdarzeń reprezentowanym przez element pUnk.
HRESULT DispEventAdvise(IUnknown* pUnk const IID* piid);
Parametry
Punk
[in] Wskaźnik do IUnknown interfejsu obiektu źródła zdarzeń.
piid
Wskaźnik do identyfikatora IID obiektu źródła zdarzeń.
Wartość zwracana
S_OK lub jakąkolwiek wartość HRESULT błędu.
Uwagi
Następnie zdarzenia wyzwalane z elementu pUnk będą kierowane do programów obsługi w klasie za pomocą mapy ujścia zdarzeń.
Uwaga
Jeśli klasa pochodzi z wielu IDispEventSimpleImpl klas, należy uściślać wywołania tej metody, określając zakres wywołania z określoną klasą bazową, którą cię interesują.
DispEventAdvise ustanawia połączenie ze źródłem zdarzeń określonym w pliku pdiid.
IDispEventSimpleImpl::D ispEventUnadvise
Przerywa połączenie ze źródłem zdarzeń reprezentowanym przez element pUnk.
HRESULT DispEventUnadvise(IUnknown* pUnk const IID* piid);
Parametry
Punk
[in] Wskaźnik do IUnknown interfejsu obiektu źródła zdarzeń.
piid
Wskaźnik do identyfikatora IID obiektu źródła zdarzeń.
Wartość zwracana
S_OK lub jakąkolwiek wartość HRESULT błędu.
Uwagi
Po przerwaniu połączenia zdarzenia nie będą już kierowane do funkcji programu obsługi wymienionych na mapie ujścia zdarzeń.
Uwaga
Jeśli klasa pochodzi z wielu IDispEventSimpleImpl klas, należy uściślać wywołania tej metody, określając zakres wywołania z określoną klasą bazową, którą cię interesują.
DispEventAdvise powoduje przerwanie połączenia, które zostało nawiązane ze źródłem zdarzeń określonym w pliku pdiid.
IDispEventSimpleImpl::GetIDsOfNames
Ta implementacja IDispatch::GetIDsOfNames zwraca E_NOTIMPL.
STDMETHOD(GetIDsOfNames)(
REFIID /* riid */,
LPOLESTR* /* rgszNames */,
UINT /* cNames */,
LCID /* lcid */,
DISPID* /* rgdispid */);
Uwagi
Zobacz IDispatch::GetIDsOfNames w zestawie Windows SDK.
IDispEventSimpleImpl::GetTypeInfo
Ta implementacja IDispatch::GetTypeInfo zwraca E_NOTIMPL.
STDMETHOD(GetTypeInfo)(
UINT /* itinfo */,
LCID /* lcid */,
ITypeInfo** /* pptinfo */);
Uwagi
Zobacz IDispatch::GetTypeInfo w zestawie Windows SDK.
IDispEventSimpleImpl::GetTypeInfoCount
Ta implementacja IDispatch::GetTypeInfoCount zwraca E_NOTIMPL.
STDMETHOD(GetTypeInfoCount)(UINT* /* pctinfo */);
Uwagi
Zobacz IDispatch::GetTypeInfoCount w zestawie Windows SDK.
IDispEventSimpleImpl::Invoke
Ta implementacja wywołań IDispatch::Invoke procedur obsługi zdarzeń wymienionych na mapie ujścia zdarzeń.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID /* riid */,
LCID lcid,
WORD /* wFlags */,
DISPPARMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* /* pexcepinfo */,
UINT* /* puArgErr */);
Uwagi
Zobacz IDispatch::Invoke.
IDispEventSimpleImpl::Unadvise
Przerywa połączenie ze źródłem zdarzeń reprezentowanym przez element pUnk.
HRESULT Unadvise(IUnknown* pUnk);
Parametry
Punk
[in] Wskaźnik do IUnknown interfejsu obiektu źródła zdarzeń.
Wartość zwracana
S_OK lub jakąkolwiek wartość HRESULT błędu.
Uwagi
Po przerwaniu połączenia zdarzenia nie będą już kierowane do funkcji programu obsługi wymienionych na mapie ujścia zdarzeń.
Uwaga
Jeśli klasa pochodzi z wielu IDispEventSimpleImpl klas, należy uściślać wywołania tej metody, określając zakres wywołania z określoną klasą bazową, którą cię interesują.
Unadvise powoduje przerwanie połączenia, które zostało nawiązane z domyślnym źródłem zdarzeń określonym w pliku pdiid.
Unavise Przerywa połączenie z domyślnym źródłem zdarzeń, pobiera identyfikator IID domyślnego źródła zdarzeń obiektu określonego przez AtlGetObjectSourceInterface.
Zobacz też
Struktura _ATL_FUNC_INFO
Klasa IDispatchImpl
Klasa IDispEventImpl
SINK_ENTRY_INFO
Omówienie klasy