ウィザードによって生成されるコード
COM の基礎:インデックス への移動
Delphi のウィザードは Delphi ActiveX フレームワーク (DAX) から継承したクラスを生成します。その名前にもかかわらず,Delphi ActiveX フレームワークは ActiveX コントロールだけでなく,すべての COM オブジェクトもサポートします。このフレームワークのクラスは,ウィザードで作成するオブジェクトのために,標準的な COM インターフェースの基底的実装を提供します。
次の図では,Delphi ActiveX フレームワークのオブジェクトを示します。
メモ: C++Builder の場合,DAX オブジェクトの名前には通常 「Cpp」が含まれます (たとえば,TCppComObject , TCppActiveXPropertyPage など)。
各ウィザードは COM サーバーオブジェクトを実装する実装ユニットを生成します。COM サーバーオブジェクト(実装オブジェクト)は,DAX にあるクラスの 1 つから派生します。
作成された実装クラスのもとになる DAX 基本クラス :
ウィザード | DAX からの基本クラス | 継承したサポート |
---|---|---|
IUnknown および ISupportErrorInfo インターフェースをサポートする 集約,OLE 例外処理,safecall 呼び出し規約,デュアルインターフェースをサポートする タイプ ライブラリ情報の読み出しをサポートする | ||
TTypedComObject が提供する全機能をサポートする IDispatch インターフェースをサポートする 自動的なマーシャリングをサポートする |
これらの COM オブジェクトの作成を制御する クラス ファクトリ オブジェクト の階層は,DAX にあるクラスに対応しています。ウィザードは,実装クラスのために適切なクラス ファクトリをインスタンス化する実装ユニットの初期化セクションにコードを追加します。
ウィザードは タイプ ライブラリ および関連付けられたユニットも生成し,その名前は Project1_TLB という形式になります。この Project1_TLB ユニットには,タイプ ライブラリ内で定義された型定義とインターフェースを使用するためにアプリケーションが必要とする定義が含まれます。このファイルの内容の詳細は,「タイプライブラリ情報のインポート時に生成されるコード」を参照してください。
ウィザードが生成したインターフェースは,タイプ ライブラリ エディタを使って変更できます。変更を加えると,その内容を反映するために実装クラスが自動的に更新されます。生成されたメソッドの中身を埋めるだけで,実装が完成します。