DispSink 属性サンプル:ハンドルのイベントをディスパッチ インターフェイス経由 Singleton COM サーバーから起動
DispSink 属性サンプルでは、イベントを発生させるために使用する独自のデュアル インターフェイスとディスパッチ インターフェイスを持つシングルトン サーバー オブジェクト (1 つのインスタンスだけを持つことができるオブジェクト) の例を示します。
DispSink サンプルは、このサンプルの属性なしバージョンです。
注意
このサンプルの Visual C++ ウィザード、ライブラリ、およびコンパイラ、一部の機能が完全に実演可能性がありますが、まだ、目的のタスクを完了する方法を示しています。
セキュリティに関するメモ |
---|
このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。 |
サンプルとそのインストール手順を取得するには
Visual Studio のサンプルにアクセスするには
[ヘルプ] メニューの [サンプル] をクリックします。
既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。
サンプルのビルドと実行
このサンプルをビルドして実行するには
ソリューション ファイル DispSink.sln を開きます。
メニューの [ビルドは、ソリューションのビルド をクリックします。
ActiveX コントロール テスト コンテナーの複数のインスタンスを開き、クライアント コントロール DispCtl を各インスタンスに挿入します。 テスト コンテナーへのアクセス方法については、「テスト コンテナーでのプロパティとイベントのテスト」を参照してください。
Invoke the Connectmethod on all of the controls.
Send メソッドのいずれかのコントロールを呼び出します。 パラメーターの型 フィールド メソッドの呼び出し ダイアログ ボックスの VT_BSTR を変更し、 パラメーター値を ボックスに任意の文字列を入力します。 Invoke をクリックします。 すべての接続コントロールの中央に文字列が表示されます。
上のすべてのコントロールを削除する前に Disconnect メソッドを呼び出します。
サンプルの動作
このサーバーは、イベントを発生させるために使用する独自のデュアル インターフェイスとディスパッチ インターフェイスを持つ単一オブジェクトです。 ディスパッチ インターフェイスは、dispinterface 属性を使用して、.idl ファイルに配置されます。 サーバー オブジェクトは、デュアル インターフェイス Send メソッドを通じてデータを受け取るし、接続されているすべてのコンポーネント、 Transfer イベントのディスパッチ インターフェイスを経由する送信します。 event_source 属性を Dispserver を使用し、 event_receiver 属性、Dispclient を使用します。
このクライアントは、サーバー オブジェクトを含む ActiveX コントロールです。 コントロールは、サーバー オブジェクトによって送られた Transfer イベントに応答します。 これは、ConnectSendDisconnect メソッドを持つ、デュアル インターフェイスがあります。 BSTR を格納するバリアントを Transfer イベントが発生した場合は、文字列がコントロールの中央に表示されます。
属性
このサンプルでは次の属性を使用します。
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
Keywords
このサンプルでは、次のキーワードを使用します。
#import ; CComAutoThreadModule; CComSimpleThreadAllocator; CoCreateInstance; DECLARE_CLASSFACTORY_AUTO_THREAD; FireViewChange