Compartir a través de


CComCoClass::CreateInstance

Utilice estas funciones de CreateInstance para crear una instancia de un objeto COM y recuperar un puntero de interfaz sin utilizar API COM.

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

Parámetros

  • Q
    La interfaz COM que se debe devolver mediante pp.

  • punkOuter
    [in] El hecho externo o desconocido la supervisión de agregado.

  • pp
    [out] La dirección de una variable de puntero que recibe el puntero solicitado de interfaz si la creación correcta.

Valor devuelto

un valor estándar de HRESULT . Vea CoCreateInstance en Windows SDK para obtener una descripción de los valores devueltos posibles.

Comentarios

Utilice la primera sobrecarga de esta función para la creación de objetos típica; utilice la segunda sobrecarga cuando necesita agregar el objeto que se está creando.

La clase ATL que implementa el objeto COM requerido (es decir, la clase utilizada como primer parámetro de plantilla a CComCoClass) debe estar en el mismo proyecto que el código de llamada. La creación del objeto COM es realizada por el generador de la clase registrada para esta clase ATL.

Estas funciones son útiles para crear los objetos que ha impedido que se externamente pueden crear mediante la macro de OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO . También son útiles en situaciones donde desea evitar API COM por motivos de eficacia.

Observe que la interfaz Q debe tener un identificador IID asociado que se puede recuperar utilizando el operador de __uuidof .

Ejemplo

En el ejemplo siguiente, CDocument es una clase generada con el asistente para ATL derivada de CComCoClass que implementa la interfaz de IDocument . La clase se registra en el mapa de objetos con la macro de OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO para que los clientes no pueden crear instancias del documento utilizando CoCreateInstance. CApplication es un Coclase que proporciona un método en una de sus propias interfaces COM para crear instancias de la clase del documento. El código siguiente la muestra cómo es fácil crear instancias de la clase del documento en el miembro de CreateInstance heredado de la clase base de CComCoClass .

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

Requisitos

encabezado: atlcom.h

Vea también

Referencia

CComCoClass Class