Share via


Módulo 2. Uso de COM en el programa de Windows-Based

El módulo 1 de esta serie mostró cómo crear una ventana y responder a mensajes de ventana como WM_PAINT y WM_CLOSE. El módulo 2 presenta el modelo de objetos componentes (COM).

COM es una especificación para crear componentes de software reutilizables. Muchas de las características que usarás en un programa moderno basado en Windows se basan en COM, como las siguientes:

  • Gráficos (Direct2D)
  • Texto (DirectWrite)
  • Shell de Windows
  • Control de cinta de opciones
  • Animación de interfaz de usuario

(Algunas tecnologías de esta lista usan un subconjunto de COM y, por lo tanto, no son "puras" COM).

COM tiene una reputación de ser difícil de aprender. Y es cierto que escribir un nuevo módulo de software para admitir COM puede ser complicado. Pero si su programa es estrictamente un consumidor de COM, es posible que com sea más fácil de entender de lo esperado.

En este módulo se muestra cómo llamar a las API basadas en COM en el programa. También describe algunos de los razonamientos que subyacen al diseño de COM. Si entiende por qué COM está diseñado tal cual, puede programar con él de forma más eficaz. En la segunda parte del módulo se describen algunos procedimientos de programación recomendados para COM.

COM se introdujo en 1993 para admitir la vinculación e inserción de objetos (OLE) 2.0. Personas a veces piensan que COM y OLE son lo mismo. Esta puede ser otra razón para la percepción de que COM es difícil de aprender. OLE 2.0 se basa en COM, pero no es necesario conocer OLE para comprender COM.

COM es un estándar binario, no un estándar de lenguaje: define la interfaz binaria entre una aplicación y un componente de software. Como estándar binario, COM es independiente del lenguaje, aunque se asigna de forma natural a determinadas construcciones de C++. Este módulo se centrará en tres objetivos principales de COM:

  • Separar la implementación de un objeto de su interfaz.
  • Administrar la duración de un objeto.
  • Detectar las funcionalidades de un objeto en tiempo de ejecución.

En esta sección

Aprender a programar para Windows en C++