Compartilhar via


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
S_OK
Êxito.
E_INVALIDARG
Um dos três primeiros argumentos não é válido.
E_OUTOFMEMORY
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

Confira também

Criação de funções de API de Expedição

IDispatch