次の方法で共有


リンクされたオブジェクトとモニカー

埋め込みオブジェクトと同様、リンクされたオブジェクトはオブジェクト ハンドラーに依存してサーバー アプリケーションと通信します。 ただし、リンクされたオブジェクト自体は、リンク ソースの名前付けと追跡を管理します。 リンク オブジェクトは、インプロセス サーバーのように機能します。 たとえば、アクティブ化すると、リンク オブジェクトはリンク ソースである OLE サーバー アプリケーションを検索して起動します。

リンク オブジェクトのハンドラーは、ハンドラー コンポーネントとリンク コンポーネントという 2 つのメイン コンポーネントで構成されます。 ハンドラー コンポーネントには、制御部分とリモート処理部分が含まれており、埋め込みオブジェクトのハンドラーとよく似た機能を果たします。 リンク コンポーネントには独自のコントローラーとキャッシュがあり、オブジェクトの構造化ストレージへのアクセスを提供します。 リンク コンポーネント コントローラーは、モニカを使用したソースの名前付けと、リンク ソースを見つけて実行するプロセスのバインドをサポートします。 (モニカーとバインドの詳細については、「コンポーネント オブジェクト モデル」を参照してください。)

ユーザーが最初にリンクされたオブジェクトを作成するか、ストレージから既存のオブジェクトをロードすると、コンテナーはオブジェクト ハンドラーとともにリンク コンポーネントのインスタンスをメモリに読み込みます。 リンク コンポーネントは、オブジェクトをリンクとして識別し、リンク ソースの名前付け、追跡、および更新を管理できるようにするインターフェイス (特に IOleLink) を提供します。

IOleLink インターフェイスを実装することで、リンクオブジェクトはリンクをサポートする関数をコンテナーに提供します。 リンクされたオブジェクトのみが IOleLink を実装し、このインターフェイスに対してクエリを実行することで、コンテナーは特定のオブジェクトが埋め込まれているかリンクされているかを判断できます。 IOleLink によって提供される最も重要な関数を使用すると、コンテナーはリンク オブジェクトのソースにバインドできます。つまり、リンクオブジェクトのネイティブ データを格納するドキュメントへの接続をアクティブ化できます。 IOleLink は、キャッシュされたプレゼンテーション データやリンク ソースの場所など、リンク オブジェクトに関する情報を管理するための関数も定義します。

リンクされたオブジェクトを含む複合ドキュメントを保存すると、リンクのデータはコンテナではなくリンク ソースとともに保存されます。 名前と場所に関する情報のみが複合ドキュメントとともに保存されます。 この動作は、データがコンテナのデータとともに保存される埋め込みオブジェクトの動作とは対照的です。

コンテナ アプリケーションは、後者またはその一部がリンク ソースとして機能できるように、埋め込まれたオブジェクトに関する情報を提供できます。 コンテナの埋め込みオブジェクトへのリンクのサポートを実装すると、ネストされた埋め込みが可能になり、リンク先のすべての埋め込みオブジェクトのオリジナルをユーザーが追跡する必要がなくなります。 たとえば、ユーザーが Microsoft Excel ワークシートを Microsoft Word に埋め込みたい場合、そのワークシートにペイントブラシで作成されたビットマップが含まれている場合、ユーザーはオリジナルではなくワークシートに含まれるビットマップのコピーにリンクできます。

複合ドキュメント

インプロセス サーバー

オブジェクト ハンドラー