Fundamentos de objetos COM de ATL

La ilustración siguiente muestra la relación entre las clases e interfaces que se usan para definir un objeto COM ATL.

Estructura ATL

[!NOTA]

Este diagrama muestra que CComObject se deriva de CYourClass mientras CComAggObject y CComPolyObject incluyen CYourClass como variable miembro.

Hay tres formas de definir un objeto COM ATL.La opción estándar es utilizar la clase de CComObject que se deriva de CYourClass.La segunda opción es crear un objeto agregado utilizando la clase de CComAggObject .La tercera opción es utilizar la clase de CComPolyObject .CComPolyObject actúa como híbrido: puede funcionar como una clase de CComObject o como una clase de CComAggObject , dependiendo de cómo se crea por primera vez.Para obtener más información sobre cómo usar la clase CComPolyObject, vea Clase de CComPolyObject.

Cuando se utiliza el estándar ATL COM, se utilizan dos objetos: un objeto externo y un objeto interno.Los clientes externos tienen acceso a la funcionalidad del objeto interno con funciones de contenedor que se definen en el objeto externo.El objeto externo es de CComObjectescrito.

Si se utiliza un objeto agregado, el objeto externo no proporciona contenedores para la funcionalidad del objeto interno.En su lugar, el objeto externo proporciona un puntero que se tiene acceso directamente por los clientes externos.En este escenario, el objeto externo es de CComAggObjectescrito.El objeto interno es una variable miembro del objeto externo, y es de CYourClassescrito.

Dado que el cliente no tiene que pasar por el objeto externo interactuar con el objeto interno, los objetos agregados suelen ser más eficaces.Además, el objeto externo no tiene que conocer la funcionalidad del objeto agregado, puesto que la interfaz del objeto agregado es directamente disponibles al cliente.Sin embargo, no todos los objetos se pueden agregar.Para que un objeto sea agregado, necesita diseñar con la agregación en mente.

ATL implementa IUnknown en dos fases:

Otros aspectos del objeto ATL COM son controlados por otras clases:

  • CComCoClass define el modelo predeterminado de generador y la agregación de la clase del objeto.

  • IDispatchImpl proporciona una implementación predeterminada de la parte de IDispatch Interface de cualquier interfaz dual en el objeto.

  • ISupportErrorInfoImpl implementa la interfaz de ISupportErrorInfo que garantiza la información de error puede propagar por la cadena de llamadas correctamente.

En esta sección

Secciones relacionadas

  • Crear un proyecto ATL
    Proporciona información sobre cómo crear un objeto COM ATL.

  • ATL
    Proporciona vínculos a temas conceptuales sobre cómo programar utilizando Active Template Library.

Vea también

Otros recursos

Conceptos de ATL