Compartilhar via


CComCoClass::CreateInstance

Use estas funções de CreateInstance para criar uma instância de um objeto COM e para recuperar um ponteiro de interface sem usar a API.

template <class Q>
static HRESULT CreateInstance(
   Q** pp 
);
template <class Q>
static HRESULT CreateInstance(
   IUnknown* punkOuter,
   Q** pp 
);

Parâmetros

  • Q
    A interface COM que deve ser retornada por meio de pp.

  • punkOuter
    [in] o desconhecido desconhecido ou controle externo de distribuição.

  • pp
    [out] o endereço de uma variável de ponteiro que recebe o ponteiro aplicativo de interface se a criação êxito.

Valor de retorno

Um valor padrão de HRESULT .Consulte CoCreateInstance em Windows SDK para obter uma descrição de retornar valores possíveis.

Comentários

Use a primeira sobrecarga de essa função para a criação do objeto; típica use a segunda sobrecarga quando você precisa agregar o objeto que está sendo criado.

A classe de ATL que implementa o objeto COM necessária (ou seja, a classe usada como o primeiro parâmetro de modelo a CComCoClass) deve estar no mesmo projeto que o código de chamada.A criação do objeto COM é realizada pela fábrica de classe registrada para esta classe de ATL.

Essas funções são úteis para criar objetos que você evitou de ser externamente creatable usando a macro de OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO .Também são úteis em situações onde você deseja evitar a API por motivo de eficiência.

Observe que a interface Q deve ter um IID associado que pode ser recuperada usando o operador de __uuidof .

Exemplo

Em o exemplo, CDocument é uma classe gerada assistentes de ATL derivada de CComCoClass que implementa a interface de IDocument .A classe é registrada no mapa de objeto com a macro de OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO para que os clientes não podem criar instâncias de documento usando CoCreateInstance.CApplication é um CoClass que fornece um método em uma de suas próprias interfaces COM para criar instâncias da classe do documento.O código abaixo mostra como fácil criar instâncias de classes documento usando o membro de CreateInstance herdado da classe base de CComCoClass .

STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
   *ppDoc = NULL;
   return CMyDoc::CreateInstance(ppDoc);
}

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe de CComCoClass