Modul 2. Verwenden von COM in Ihrem Windows-Based-Programm

In Modul 1 dieser Reihe wurde gezeigt, wie Sie ein Fenster erstellen und auf Fenstermeldungen wie WM_PAINT und WM_CLOSE reagieren. Modul 2 führt das Component Object Model (COM) ein.

COM ist eine Spezifikation zum Erstellen wiederverwendbarer Softwarekomponenten. Viele der Features, die Sie in einem modernen Windows-basierten Programm verwenden, basieren auf COM, z. B. die folgenden:

  • Grafiken (Direct2D)
  • Text (DirectWrite)
  • Die Windows-Shell
  • Das Menübandsteuerelement
  • Animation der Benutzeroberfläche

(Einige Technologien in dieser Liste verwenden eine Teilmenge von COM und sind daher nicht "reines" COM.)

COM hat den Ruf, schwer zu erlernen. Und es ist wahr, dass das Schreiben eines neuen Softwaremoduls zur Unterstützung von COM schwierig sein kann. Wenn Ihr Programm jedoch streng genommen com verwendet , stellen Sie möglicherweise fest, dass COM leichter zu verstehen ist, als Sie erwarten.

In diesem Modul erfahren Sie, wie Sie COM-basierte APIs in Ihrem Programm aufrufen. Er beschreibt auch einige der Gründe für den Entwurf von COM. Wenn Sie verstehen, warum COM so konzipiert ist, wie es ist, können Sie damit effektiver programmieren. Im zweiten Teil des Moduls werden einige empfohlene Programmiermethoden für COM beschrieben.

COM wurde 1993 eingeführt, um OLE 2.0 (Object Linking and Embedding) zu unterstützen. Personen denken manchmal, dass COM und OLE dasselbe sind. Dies kann ein weiterer Grund für die Wahrnehmung sein, dass COM schwer zu erlernen ist. OLE 2.0 basiert auf COM, aber Sie müssen OLE nicht kennen, um COM zu verstehen.

COM ist ein binärer Standard, kein Sprachstandard: Es definiert die binäre Schnittstelle zwischen einer Anwendung und einer Softwarekomponente. Als Binärstandard ist COM sprachneutral, obwohl es natürlich bestimmten C++-Konstrukten zugeordnet wird. Dieses Modul konzentriert sich auf drei Hauptziele von COM:

  • Trennen der Implementierung eines Objekts von seiner Schnittstelle.
  • Verwalten der Lebensdauer eines Objekts.
  • Ermitteln der Funktionen eines Objekts zur Laufzeit.

In diesem Abschnitt

Programmieren für Windows in C++