Klasa IDispatchImpl

Zapewnia domyślną implementację części IDispatch podwójnego interfejsu.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

template<class T,
        const IID* piid= &__uuidof(T),
        const GUID* plibid = &CAtlModule::m_libid,
        WORD wMajor = 1,
        WORD wMinor = 0,
        class tihclass = CComTypeInfoHolder>
class ATL_NO_VTABLE IDispatchImpl : public T

Parametry

T
[in] Podwójny interfejs.

piid
[in] Wskaźnik do identyfikatora IID T.

plibid
[in] Wskaźnik do LIBID biblioteki typów, która zawiera informacje o interfejsie. Domyślnie biblioteka typów na poziomie serwera jest przekazywana.

wMajor
[in] Główna wersja biblioteki typów. Domyślnie wartość to 1.

wMinor
[in] Wersja pomocnicza biblioteki typów. Domyślnie wartość to 0.

tihclass
[in] Klasa używana do zarządzania informacjami o typie dla języka T. Domyślnie wartość to CComTypeInfoHolder.

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
IDispatchImpl::IDispatchImpl Konstruktor. Wywołuje AddRef chronioną zmienną składową, która zarządza informacjami o typie dla podwójnego interfejsu. Destruktor wywołuje metodę Release.

Metody publiczne

Nazwa/nazwisko opis
IDispatchImpl::GetIDsOfNames Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.
IDispatchImpl::GetTypeInfo Pobiera informacje o typie dla interfejsu podwójnego.
IDispatchImpl::GetTypeInfoCount Określa, czy istnieją informacje o typie dostępne dla interfejsu podwójnego.
IDispatchImpl::Invoke Zapewnia dostęp do metod i właściwości udostępnianych przez interfejs podwójny.

Uwagi

IDispatchImpl Zapewnia domyślną implementację IDispatch dla części dowolnego podwójnego interfejsu w obiekcie. Podwójny interfejs pochodzi z i używa tylko typów zgodnych z IDispatch automatyzacją. Podobnie jak w przypadku dispinterface, podwójny interfejs obsługuje wczesne wiązanie i późne powiązanie; jednak podwójny interfejs obsługuje również powiązanie wirtualne.

W poniższym przykładzie przedstawiono typową implementację .IDispatchImpl

class ATL_NO_VTABLE CBeeper :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CBeeper, &CLSID_Beeper>,
   public IDispatchImpl<IBeeper, &IID_IBeeper, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>

Domyślnie IDispatchImpl klasa wyszukuje informacje o typie T w rejestrze. Aby zaimplementować niezarejestrowany interfejs, można użyć IDispatchImpl klasy bez uzyskiwania dostępu do rejestru przy użyciu wstępnie zdefiniowanego numeru wersji. Jeśli utworzysz IDispatchImpl obiekt, który ma 0xFFFF jako wartość dla wMajor i 0xFFFF jako wartość wMinor, IDispatchImpl klasa pobiera bibliotekę typów z pliku .dll zamiast rejestru.

IDispatchImpl zawiera statyczny element członkowski typu CComTypeInfoHolder , który zarządza informacjami o typie dla podwójnego interfejsu. Jeśli masz wiele obiektów, które implementują ten sam podwójny interfejs, używane jest tylko jedno wystąpienie CComTypeInfoHolder .

Hierarchia dziedziczenia

T

IDispatchImpl

Wymagania

Nagłówek: atlcom.h

IDispatchImpl::GetIDsOfNames

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

STDMETHOD(GetIDsOfNames)(
    REFIID riid,
    LPOLESTR* rgszNames,
    UINT cNames,
    LCID lcid,
    DISPID* rgdispid);

Uwagi

Zobacz IDispatch::GetIDsOfNames w zestawie Windows SDK.

IDispatchImpl::GetTypeInfo

Pobiera informacje o typie dla interfejsu podwójnego.

STDMETHOD(GetTypeInfo)(
    UINT itinfo,
    LCID lcid,
    ITypeInfo** pptinfo);

Uwagi

Zobacz IDispatch::GetTypeInfo w zestawie Windows SDK.

IDispatchImpl::GetTypeInfoCount

Określa, czy istnieją informacje o typie dostępne dla interfejsu podwójnego.

STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);

Uwagi

Zobacz IDispatch::GetTypeInfoCount w zestawie Windows SDK.

IDispatchImpl::IDispatchImpl

Konstruktor. Wywołuje AddRef chronioną zmienną składową, która zarządza informacjami o typie dla podwójnego interfejsu. Destruktor wywołuje metodę Release.

IDispatchImpl();

IDispatchImpl::Invoke

Zapewnia dostęp do metod i właściwości udostępnianych przez interfejs podwójny.

STDMETHOD(Invoke)(
    DISPID dispidMember,
    REFIID riid,
    LCID lcid,
    WORD wFlags,
    DISPPARAMS* pdispparams,
    VARIANT* pvarResult,
    EXCEPINFO* pexcepinfo,
    UINT* puArgErr);

Uwagi

Zobacz IDispatch::Invoke w zestawie Windows SDK.

Zobacz też

Omówienie klasy