DispSink 属性サンプル : ディスパッチ インターフェイス経由で COM シングルトン サーバーから送られるイベントの処理

更新 : 2007 年 11 月

DispSink 属性サンプルでは、イベントを発生させるために使用する独自のデュアル インターフェイスとディスパッチ インターフェイスを持つシングルトン サーバー オブジェクト (1 つのインスタンスだけを持つことができるオブジェクト) の例を示します。

DispSink サンプルは、このサンプルの属性なしバージョンです。

ayd83abw.alert_note(ja-jp,VS.90).gifメモ :

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

ayd83abw.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

このサンプルをビルドして実行するには

  1. ソリューション ファイル DispSink.sln を開きます。

  2. [ビルド] メニューの [ソリューションのビルド] をクリックします。

  3. ActiveX コントロール テスト コンテナの複数のインスタンスを開き、クライアント コントロール DispCtl を各インスタンスに挿入します。テスト コンテナへのアクセス方法については、「テスト コンテナでのプロパティとイベントのテスト」を参照してください。

  4. すべてのコントロールで Connect メソッドを呼び出します。

  5. コントロールの 1 つで Send メソッドを呼び出します。[メソッドの呼び出し] ダイアログ ボックスの [パラメータの型] フィールドを [VT_BSTR] に変更し、[パラメータ値] ボックスに任意の文字列を入力します。Invoke をクリックします。すべての接続コントロールの中央に文字列が表示されます。

  6. コントロールを削除する前に、すべてのコントロールで Disconnect メソッドを呼び出します。

サンプルの動作

このサーバーは、イベントを発生させるために使用する独自のデュアル インターフェイスとディスパッチ インターフェイスを持つ単一オブジェクトです。ディスパッチ インターフェイスは、dispinterface 属性を使用して .idl ファイル内に配置されます。サーバー オブジェクトは、デュアル インターフェイスの Send メソッドを通じてデータを受け取り、ディスパッチ インターフェイスの Transfer イベントを通じてすべての接続コンポーネントにそのデータを送信します。Dispserver は event_source 属性を使用し、Dispclient は event_receiver 属性を使用します。

このクライアントは、サーバー オブジェクトを含む ActiveX コントロールです。このコントロールは、サーバー オブジェクトが発生させた Transfer イベントに応答します。このコントロールには ConnectSend、および Disconnect の各メソッドを持つデュアル インターフェイスがあります。Transfer イベントが BSTR を含むバリアントで発生した場合は、文字列がコントロールの中央に表示されます。

属性

このサンプルでは次の属性を使用します。

  • DISPSINK/DispClient   coclass、dual、event_receiver、helpstring、id、module、object、pointer_default、registration_script、threading、uuid、version、vi_progid

  • DISPSINK/DispServer   coclass、default、dispinterface、dual、event_source、helpstring、id、module、object、pointer_default、threading、uuid、vi_progid

キーワード

このサンプルでは、次のキーワードを使用します。

#import; CComAutoThreadModule; CComSimpleThreadAllocator; CoCreateInstance; DECLARE_CLASSFACTORY_AUTO_THREAD; FireViewChange

参照

その他の技術情報

ATL 属性のサンプル