COPaper は IConnectionPointContainer インターフェイスを公開するため、クライアントは COPaper に接続して、COPaper で発生する指定されたイベントの通知を受け取ることができます。 このインターフェイスを公開することで、COPaper は接続可能なオブジェクトになります。 クライアントは、このインターフェイスに対 して QueryInterface を 呼び出し、それを使用してオブジェクトの接続ポイントを取得できます。 このスキームへのクライアント参加については、関連する StoClien サンプルで説明します。
基本的に、クライアントはシンク インターフェイスを持つシンク オブジェクトの形式でシンクと呼ばれるものを実装します。 シンク インターフェイスは、クライアントによって COPaper インスタンスにシンクが正しく接続された後、COPaper から発信イベント通知呼び出しを受信します。 クライアントは、COPaper によって管理される接続ポイント オブジェクトを使用して接続を確立します。 1 つの接続可能な COM オブジェクトには、多数の接続ポイントが存在する可能性があります。 StoServe サンプルでは、COPaper には、描画用紙イベントを処理する接続ポイントが 1 つしかありません。
任意の数のクライアントが 1 つの接続ポイントに接続できます。 COPaper のCONNPOINT_PAPERSINK接続ポイントは、実行時に動的に拡張できる接続のグループを維持します。 COPaper の接続可能なオブジェクトのサポートの詳細については、CONNECT ファイルにコード化されています。H と CONNECT。CPP と については、ここでは取り上げません。 この構造は、CONSERVE コード サンプルで調査されたものと非常によく似ています。
StoClien クライアントは、COPaper で検索する必要のある接続ポイントに適したシンク オブジェクトを実装します。 COPaper のコンテキストから、 StoClien が実装する重要なシンク オブジェクトは IPaperSink インターフェイスを公開します。 これは、COPaper のさまざまなイベントを StoClien に通知するために COPaper によって使用される送信インターフェイスです。
IPAPER からの IPaperSink のメソッドの概要を次に示します。\INC 兄弟ディレクトリの H。
| メソッド | 説明 |
|---|---|
| ロック | クライアントが用紙を制御し、ロックしました。 |
| ロック解除済み | クライアントは紙の制御を放棄しました。 |
| 読み込み | クライアントが独自の複合ファイルから用紙コンテンツを読み込んだ。 |
| 保存済み | クライアントは、紙の内容を独自の複合ファイルに保存しました。 |
| InkStart | クライアントがカラー インク描画シーケンスを紙に開始しました。 |
| InkDraw | クライアントが用紙表面にインク データ ポイントを配置しています。 |
| InkStop | クライアントが用紙へのインク描画シーケンスを停止しました。 |
| 消去 | クライアントが用紙からすべてのインク データを消去しました。 |
| サイズ | クライアントが用紙のサイズを変更しました。 |
これらの方法は、主に自明です。 シンクはこれらすべてのメソッドを何らかの方法で実装する必要がありますが、多くはスタブとして実装され、 StoServe/StoClien サンプルでは使用されません。
これらのサンプルで使用される重要なメソッドは、Loaded メソッドです。 COPaper がクライアントからファイルから新しい図面を読み込むよう指定された場合は、新しいデータが読み込まれたときにクライアントに通知する方法が必要です。 これを行うには、COPaper はクライアント シンクで IPaperSink::Loaded を呼び出します。 その後、クライアントは IPaper::Redraw を呼び出して、COPaper が新しいデータをクライアントに再生するように要求できます。 再描画すると、クライアントのディスプレイに読み込まれた図面が再描画されます。 読み込みが完了すると、新しく読み込まれた図面が、クライアントによって提供されるウィンドウに自動的に表示されます。
この IPaper メソッドの IPaperSink への接続の詳細については、「IPaper::Redraw」を参照してください。
IPaperSink メソッド InkStart、InkDraw、InkStop は、個々のインク データ パケットをクライアントに送り返すために使用されます。 受信時に、クライアントは最初に COPaper に送信したときと同じ方法で、ディスプレイに描画します。 上記のロジックは、同じCONNPOINT_PAPERSINK接続ポイントですべてリッスンしている複数のクライアントを許可するのに十分な一般的なロジックです。 共通の COPaper インスタンスがこれらのクライアントによって共有されている場合は、この接続ポイントに接続することで、すべて同じ図面を表示できます。