Udostępnij za pośrednictwem


Klasa IDispEventSimpleImpl

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.cc x86 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