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.