次の方法で共有


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

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

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

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

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

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

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

複合ドキュメント する

In-Process サーバー

オブジェクト ハンドラーの