モジュール 2。 Windows-Based プログラムでの COM の使用

このシリーズのモジュール 1 では、ウィンドウを作成し、WM_PAINTWM_CLOSEなどのウィンドウ メッセージに応答する方法を示しました。 モジュール 2 では、コンポーネント オブジェクト モデル (COM) が導入されています。

COM は、再利用可能なソフトウェア コンポーネントを作成するための仕様です。 最新の Windows ベースのプログラムで使用する機能の多くは、次のような COM に依存しています。

  • グラフィックス (Direct2D)
  • テキスト (DirectWrite)
  • Windows シェル
  • リボン コントロール
  • UI アニメーション

(この一覧の一部のテクノロジでは、COM のサブセットを使用するため、"純粋な" COM ではありません)。

COM は、学習が困難であるという評判を持っています。 また、COM をサポートする新しいソフトウェア モジュールを作成するのは難しい場合があります。 しかし、プログラムが厳密に COM の コンシューマー である場合は、COM が予想よりも理解しやすい場合があります。

このモジュールでは、プログラムで COM ベースの API を呼び出す方法を示します。 また、COM の設計の背後にある推論の一部についても説明します。 COM がそのまま設計されている理由を理解すれば、より効果的にプログラミングできます。 モジュールの 2 番目の部分では、COM の推奨されるプログラミング プラクティスについて説明します。

COM は、オブジェクトのリンクと埋め込み (OLE) 2.0 をサポートするために 1993 年に導入されました。 People、COM と OLE は同じものと考えることがあります。 これは、COM が学習が困難であるという認識のもう 1 つの理由である可能性があります。 OLE 2.0 は COM 上に構築されていますが、COM を理解するために OLE を知る必要はありません。

COM は 、言語標準ではなくバイナリ標準です。アプリケーションとソフトウェア コンポーネントの間のバイナリ インターフェイスを定義します。 バイナリ標準として、COM は言語に依存しませんが、特定の C++ コンストラクトに自然にマップされます。 このモジュールでは、COM の 3 つの主要な目標に焦点を当てます。

  • オブジェクトの実装をそのインターフェイスから分離する。
  • オブジェクトの有効期間の管理。
  • 実行時にオブジェクトの機能を検出する。

このセクションの内容

C++ で Windows 用プログラムを作成する方法について説明します