Модуль 2. Использование COM в программе Windows-Based

В модуле 1 этой серии показано, как создать окно и реагировать на сообщения окна , такие как WM_PAINT и WM_CLOSE. В модуле 2 представлена компонентная объектная модель (COM).

COM — это спецификация для создания повторно используемых программных компонентов. Многие функции, которые будут использоваться в современной программе на основе Windows, зависят от COM, например:

  • Графика (Direct2D)
  • Текст (DirectWrite)
  • Оболочка Windows
  • Элемент управления "Лента"
  • Анимация пользовательского интерфейса

(Некоторые технологии в этом списке используют подмножество COM и поэтому не являются "чистыми" COM.)

COM имеет репутацию трудно учиться. И это правда, что написание нового программного модуля для поддержки COM может быть сложной задачей. Но если ваша программа является исключительно потребителем COM, вы можете обнаружить, что COM проще понять, чем вы ожидаете.

В этом модуле показано, как вызывать API на основе COM в программе. В нем также описываются некоторые причины, лежащие в основе проектирования COM. Если вы понимаете, почему COM разработан так, как есть, вы можете программируйте с его помощью более эффективно. Во второй части модуля описываются некоторые рекомендуемые методы программирования для COM.

COM был представлен в 1993 году для поддержки связывания и внедрения объектов (OLE) 2.0. Люди иногда думают, что COM и OLE — это одно и то же. Это может быть еще одной причиной для восприятия того, что COM трудно освоить. OLE 2.0 основан на COM, но вам не нужно знать OLE, чтобы понять COM.

COM — это двоичный, а не языковой стандарт. Он определяет двоичный интерфейс между приложением и программным компонентом. В качестве двоичного стандарта COM не зависит от языка, хотя он естественным образом сопоставляется с определенными конструкциями C++. В этом модуле основное внимание уделяется трем основным целям COM:

  • Отделение реализации объекта от его интерфейса.
  • Управление временем существования объекта.
  • Обнаружение возможностей объекта во время выполнения.

В этом разделе

Узнайте, как программировать для Windows на C++