DispSink 属性サンプル : ディスパッチ インターフェイス経由で COM シングルトン サーバーから送られるイベントの処理
更新 : 2007 年 11 月
DispSink 属性サンプルでは、イベントを発生させるために使用する独自のデュアル インターフェイスとディスパッチ インターフェイスを持つシングルトン サーバー オブジェクト (1 つのインスタンスだけを持つことができるオブジェクト) の例を示します。
DispSink サンプルは、このサンプルの属性なしバージョンです。
メモ : |
---|
このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。 |
セキュリティに関するメモ : |
---|
このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。 |
サンプルとそのインストール手順を取得するには
Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。
詳細については、「サンプル ファイルの格納場所」を参照してください。
使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。
サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。
サンプルのビルドと実行
このサンプルをビルドして実行するには
ソリューション ファイル DispSink.sln を開きます。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
ActiveX コントロール テスト コンテナの複数のインスタンスを開き、クライアント コントロール DispCtl を各インスタンスに挿入します。テスト コンテナへのアクセス方法については、「テスト コンテナでのプロパティとイベントのテスト」を参照してください。
すべてのコントロールで Connect メソッドを呼び出します。
コントロールの 1 つで Send メソッドを呼び出します。[メソッドの呼び出し] ダイアログ ボックスの [パラメータの型] フィールドを [VT_BSTR] に変更し、[パラメータ値] ボックスに任意の文字列を入力します。Invoke をクリックします。すべての接続コントロールの中央に文字列が表示されます。
コントロールを削除する前に、すべてのコントロールで Disconnect メソッドを呼び出します。
サンプルの動作
このサーバーは、イベントを発生させるために使用する独自のデュアル インターフェイスとディスパッチ インターフェイスを持つ単一オブジェクトです。ディスパッチ インターフェイスは、dispinterface 属性を使用して .idl ファイル内に配置されます。サーバー オブジェクトは、デュアル インターフェイスの Send メソッドを通じてデータを受け取り、ディスパッチ インターフェイスの Transfer イベントを通じてすべての接続コンポーネントにそのデータを送信します。Dispserver は event_source 属性を使用し、Dispclient は event_receiver 属性を使用します。
このクライアントは、サーバー オブジェクトを含む ActiveX コントロールです。このコントロールは、サーバー オブジェクトが発生させた Transfer イベントに応答します。このコントロールには Connect、Send、および 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