Classe IDispatchImpl
Fornece uma implementação padrão para a parte IDispatch
de uma interface dupla.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
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
Parâmetros
T
[in] Uma interface dupla.
piid
[in] Um ponteiro para o IID de T.
plibid
[in] Um ponteiro para a LIBID da biblioteca de tipos que contém as informações sobre a interface. Por padrão, a biblioteca de tipos no nível do servidor é passada.
wMajor
[in] A versão principal da biblioteca de tipos. Por padrão, o valor é 1.
wMinor
[in] A versão secundária da biblioteca de tipos. Por padrão, o valor é 0.
tihclass
[in] A classe usada para gerenciar as informações de tipo para T. Por padrão, o valor é CComTypeInfoHolder
.
Membros
Construtores públicos
Nome | Descrição |
---|---|
IDispatchImpl::IDispatchImpl | O construtor . Chama AddRef na variável de membro protegida que gerencia as informações de tipo para a interface dupla. O destruidor chama Release . |
Métodos públicos
Nome | Descrição |
---|---|
IDispatchImpl::GetIDsOfNames | Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição. |
IDispatchImpl::GetTypeInfo | Recupera as informações de tipo para a interface dupla. |
IDispatchImpl::GetTypeInfoCount | Determina se há informações de tipo disponíveis para a interface dupla. |
IDispatchImpl::Invoke | Fornece acesso aos métodos e propriedades expostos pela interface dupla. |
Comentários
IDispatchImpl
fornece uma implementação padrão para a parte IDispatch
de qualquer interface dupla em um objeto. Uma interface dupla deriva de IDispatch
e usa apenas tipos compatíveis com automação. Como um dispinterface, uma interface dupla dá suporte para associação antecipada e associação tardia, no entanto, uma interface dupla também dá suporte para associação vtable.
O exemplo a seguir mostra uma implementação típica de 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>
Por padrão, a classe IDispatchImpl
pesquisa as informações de tipo para T no registro. Para implementar uma interface não registrada, é possível usar a classe IDispatchImpl
sem acessar o registro usando um número de versão predefinido. Se você criar um objeto IDispatchImpl
que tenha 0xFFFF como o valor para wMajor e 0xFFFF como o valor para wMinor, a classe IDispatchImpl
recuperará a biblioteca de tipos do arquivo .dll, em vez do registro.
IDispatchImpl
contém um membro estático do tipo CComTypeInfoHolder
que gerencia as informações de tipo para a interface dupla. Se houver vários objetos que implementam a mesma interface dupla, será utilizada apenas uma instância de CComTypeInfoHolder
.
Hierarquia de herança
T
IDispatchImpl
Requisitos
Cabeçalho: atlcom.h
IDispatchImpl::GetIDsOfNames
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.
STDMETHOD(GetIDsOfNames)(
REFIID riid,
LPOLESTR* rgszNames,
UINT cNames,
LCID lcid,
DISPID* rgdispid);
Comentários
Confira IDispatch::GetIDsOfNames no SDK do Windows.
IDispatchImpl::GetTypeInfo
Recupera as informações de tipo para a interface dupla.
STDMETHOD(GetTypeInfo)(
UINT itinfo,
LCID lcid,
ITypeInfo** pptinfo);
Comentários
Confira IDispatch::GetTypeInfo no SDK do Windows.
IDispatchImpl::GetTypeInfoCount
Determina se há informações de tipo disponíveis para a interface dupla.
STDMETHOD(GetTypeInfoCount)(UINT* pctinfo);
Comentários
Consulte IDispatch::GetTypeInfoCount
no SDK do Windows.
IDispatchImpl::IDispatchImpl
O construtor . Chama AddRef
na variável de membro protegida que gerencia as informações de tipo para a interface dupla. O destruidor chama Release
.
IDispatchImpl();
IDispatchImpl::Invoke
Fornece acesso aos métodos e propriedades expostos pela interface dupla.
STDMETHOD(Invoke)(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* pexcepinfo,
UINT* puArgErr);
Comentários
Consulte IDispatch::Invoke no SDK do Windows.