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