次の方法で共有


オブジェクトへのコネクション ポイントの追加

ATL チュートリアルでは、コネクション ポイントをサポートするコントロールの作成方法、イベントの追加方法、およびコネクション ポイントの実装方法の例を示します。 ATL は、IConnectionPointImpl クラスを使用してコネクション ポイントを実装します。

コネクション ポイントを実装するには、2 つの方法があります。

  • コントロールまたはオブジェクトにコネクション ポイントを追加することにより、独自のアウトゴーイング イベント ソースを実装します。

  • 別のタイプ ライブラリで定義されているコネクション ポイント インターフェイスを再利用します。

どちらの場合も、接続ポイントの実装ウィザードはタイプ ライブラリを使用して作業を行います。

コントロールまたはオブジェクトにコネクション ポイントを追加するには

  1. .idl ファイルのライブラリ ブロックにディスパッチ インターフェイスを定義します。 ATL コントロール ウィザードでコントロールを作成したときにコネクション ポイントのサポートを有効にした場合、ディスパッチ インターフェイスは既に作成されています。 コントロールの作成時にコネクション ポイントのサポートを有効にしなかった場合は、ディスパッチ インターフェイスを .idl ファイルに手動で追加する必要があります。 次にディスパッチ インターフェイスの例を示します。 アウトゴーイング インターフェイスはディスパッチ インターフェイスにする必要はありませんが、VBScript や JScript などの多くのスクリプト言語ではこれが要求されるため、この例では 2 つのディスパッチ インターフェイスを使用します。

    [
       uuid(3233E37D-BCC0-4871-B277-48AE6B61224A),
       helpstring("Buddy Events")
    ]
    dispinterface DBuddyEvents
    {
       properties:
       methods:
    };
    

    uuidgen.exe ユーティリティまたは guidgen.exe ユーティリティを使用して GUID を生成します。

  2. プロジェクトの .idl ファイル内のオブジェクトのコクラスに、ディスパッチ インターフェイスを [default,source] インターフェイスとして追加します。 また、コントロールの作成時にコネクション ポイントのサポートを有効にした場合は、ATL コントロール ウィザードの [default,source] エントリが作成されます。 このエントリを手動で追加するには、次に示す太字の行を追加します。

    coclass Buddy
    {
       [default] interface IBuddy;
       [default,source] dispinterface DBuddyEvents;
    };
    

    例については、Circ ATL サンプルの .idl ファイルを参照してください。

  3. [クラス ビュー] を使用して、イベント インターフェイスにメソッドとプロパティを追加します。 [クラス ビュー] でクラスを右クリックし、ショートカット メニューの [追加] をポイントし、[接続ポイントの追加] をクリックします。

  4. 接続ポイントの実装ウィザードの [ソース インターフェイス] ボックスで、インターフェイスを選択します。 コントロールのインターフェイスを選択して [完了] をクリックした場合は、次の処理を行います。

    • ヘッダー ファイルを生成し、イベントに対するアウトゴーイング インターフェイス呼び出しコードをイベント プロキシ クラスで実装します。

    • コネクション ポイント マップにエントリを追加します。

    コンピューターにあるすべてのタイプ ライブラリの一覧も表示されます。 別のタイプ ライブラリで見つかった同一のアウトゴーイング インターフェイスを実装する場合は、ほかのタイプ ライブラリの 1 つだけを使用してコネクション ポイントを定義する必要があります。

別のタイプ ライブラリで定義されているコネクション ポイント インターフェイスを再利用するには

  1. [クラス ビュー] で、BEGIN_COM_MAP マクロを実装するクラスを右クリックし、ショートカット メニューの [追加] をポイントし、[接続ポイントの追加] をクリックします。

  2. 接続ポイントの実装ウィザードで、タイプ ライブラリとタイプ ライブラリ内のインターフェイスを選択し、[追加] をクリックします。

  3. .idl ファイルを編集して、次のいずれかを行います。

    • イベント ソースが使用されているオブジェクトの .idl ファイルからディスパッチ インターフェイスをコピーします。

    • そのタイプ ライブラリに対して importlib 命令を使用します。

参照

参照

ATL コネクション ポイント