モジュール 2。 Windows-Based プログラムでの COM の使用
このシリーズのモジュール 1 では、ウィンドウを作成し、WM_PAINTやWM_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 つの主要な目標に焦点を当てます。
- オブジェクトの実装をそのインターフェイスから分離する。
- オブジェクトの有効期間の管理。
- 実行時にオブジェクトの機能を検出する。
このセクションの内容
- COM インターフェイスとは
- COM ライブラリの初期化
- COM のエラー コード
- COM でのオブジェクトの作成
- 例: [開く] ダイアログ ボックス
- オブジェクトの有効期間の管理
- オブジェクトにインターフェイスを要求する
- COM でのメモリ割り当て
- COM コーディングプラクティス
- COM でのエラー処理
関連トピック