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