Partilhar via


CComCoClass::CreateInstance

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

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] Externo desconhecido ou controlar desconhecido do agregado.

  • pp
    [out] O endereço de uma variável de ponteiro que recebe o ponteiro de interface solicitada, se for bem-sucedida de criação.

Valor de retorno

Um padrão HRESULT valor. See CoCreateInstance in the Windows SDK Para obter uma descrição dos possíveis valores de retorno.

Comentários

Use a primeira sobrecarga desta função para a criação do objeto típico; use a segunda sobrecarga quando precisar agregar o objeto que está sendo criado.

A classe ATL implementa o objeto COM necessário (isto é, a classe usada sistema autônomo o primeiro parâmetro de modelo para CComCoClass) devem estar no mesmo projeto sistema autônomo código de chamada.A criação de objeto COM é realizada pela fábrica de classes registrada para esta classe ATL.

Essas funções são úteis para a criação de objetos que não podem ser sejam creatable externamente, usando o OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO macro.Eles também são úteis em situações onde você deseja evitar a API COM para fins de eficiência.

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

Exemplo

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

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

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe CComCoClass

Outros recursos

CComCoClass membros