Função CreateStdDispatch (oleauto.h)
Cria uma implementação padrão da interface IDispatch por meio de uma única chamada de função. Isso simplifica a exposição de objetos por meio da Automação.
Sintaxe
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
Parâmetros
punkOuter
A implementação IUnknown do objeto.
pvThis
O objeto a ser exposto.
ptinfo
As informações de tipo que descrevem o objeto exposto.
ppunkStdDisp
O desconhecido privado para o objeto que implementa a chamada queryInterface da interface IDispatch . Esse ponteiro será nulo se a função falhar.
Retornar valor
Essa função pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
Um dos três primeiros argumentos não é válido. |
|
Não havia memória suficiente para concluir a operação. |
Comentários
Você pode usar CreateStdDispatch ao criar um objeto em vez de implementar as funções de membro IDispatch para o objeto . No entanto, a implementação que CreateStdDispatch cria tem estas limitações:
- Dá suporte a apenas uma língua nacional.
- Dá suporte apenas a códigos de exceção definidos por expedição retornados de Invoke.
LoadTypeLib, GetTypeInfoOfGuid e CreateStdDispatch compõem o conjunto mínimo de funções que você precisa chamar para expor um objeto usando uma biblioteca de tipos. Para obter mais informações sobre LoadTypeLib e GetTypeInfoOfGuid, consulte Interfaces de descrição do tipo.
CreateDispTypeInfo e CreateStdDispatch compõem o conjunto mínimo de componentes de expedição que você precisa chamar para expor um objeto usando informações de tipo fornecidas pela estrutura INTERFACEDATA.
Exemplos
O código a seguir implementa a interface IDispatch para a classe CCalc usando CreateStdDispatch.
CCalc FAR*
CCalc::Create()
{
HRESULT hresult;
CCalc * pcalc;
CArith * parith;
ITypeInfo* ptinfo;
IUnknown * punkStdDisp;
extern INTERFACEDATA NEARDATA g_idataCCalc;
if((pcalc = new FAR CCalc()) == NULL)
return NULL;
pcalc->AddRef();
parith = &(pcalc->m_arith);
// Build type information for the functionality on this object that
// is being exposed for external programmability.
hresult = CreateDispTypeInfo(
&g_idataCCalc, LOCALE_SYSTEM_DEFAULT, &ptinfo);
if(hresult != NOERROR)
goto LError0;
// Create an aggregate with an instance of the default
// implementation of IDispatch that is initialized with
// type information.
hresult = CreateStdDispatch(
pcalc, // Controlling unknown.
parith, // Instance to dispatch on.
ptinfo, // Type information describing the instance.
&punkStdDisp);
ptinfo-&>Release();
if(hresult != NOERROR)
goto LError0;
pcalc->m_punkStdDisp = punkStdDisp;
return pcalc;
LError0:;
pcalc->Release();
return NULL;
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | oleauto.h |
Biblioteca | OleAut32.lib |
DLL | OleAut32.dll |