次の方法で共有


IOleLink::SetSourceMoniker メソッド (oleidl.h)

リンク ソースのモニカーを設定します。

構文

HRESULT SetSourceMoniker(
  [in] IMoniker *pmk,
  [in] REFCLSID rclsid
);

パラメーター

[in] pmk

リンク オブジェクトの新しいリンク ソースを識別するモニカー上の IMoniker インターフェイスへのポインター。 NULL 値を 指定すると 、リンクが切断されます。

[in] rclsid

リンク オブジェクトがバインドされていない場合にリンク オブジェクトに関する情報にアクセスするために使用するリンク ソースの CLSID。

戻り値

このメソッドは、成功したS_OKを返します。

解説

呼び出し元へのメモ

エンド ユーザーがリンクのソースを変更したり、リンクを切断したりすると、コンテナー アプリケーションは IOleLink::SetSourceMoniker を呼び出すことができます。 そのためには、コンテナーで MkParseDisplayName 関数を使用して、エンド ユーザーが入力した表示名からモニカーを作成する必要があります。 リンクされたオブジェクトに解析を実行させる場合は、コンテナーで IOleLink::SetSourceMoniker ではなく IOleLink::SetSourceDisplayName を呼び出すことができます。

エンド ユーザーは、[リンク] ダイアログ ボックスを使用してリンクのソースを変更するか、 リンク を解除します。 OleUIEditLinks 関数を使用して [リンク] ダイアログ ボックスを表示する場合は、IOleUILinkContainer インターフェイスを実装する必要があります。 このダイアログ ボックスでは、 IOleUILinkContainer::SetLinkSourceIOleUILinkContainer::CancelLink の実装が呼び出されます。これらのメソッドの実装では 、IOleLink::SetSourceMoniker を呼び出すことができます。

リンク オブジェクトがそのリンク ソースに現在バインドされている場合、リンク オブジェクトの IOleLink::SetSourceMoniker の実装は、モニカーを変更する前にリンクを閉じます。

実装者へのメモ

IOleLink コントラクトでは、リンク オブジェクトがリンク ソース モニカーを格納または使用する方法は指定されません。 指定された実装では、リンクの作成時またはモニカーの変更時に指定された絶対モニカーが格納されます。次に、相対モニカーを計算して格納します。 今後の実装では、モニカーの管理方法が異なり、モニカーの追跡が向上する可能性があります。 絶対モニカーは、リンク ソースへの完全なパスを提供します。 リンク オブジェクトは、この絶対モニカーと複合ドキュメントのモニカーを使用して、リンクを含む複合ドキュメントに対するリンク ソースを識別する相対モニカーを計算します。

pmkCompoundDoc-RelativePathTo>(pmkAbsolute, ppmkRelative)

リンク ソースにバインドする場合、リンク オブジェクトは最初に相対モニカーを使用してバインドを試みます。 失敗した場合は、絶対モニカーをバインドしようとします。

リンクされたオブジェクトが相対モニカーまたは絶対モニカーを使用して正常にバインドされると、もう一方のモニカーが自動的に更新されます。 リンク オブジェクトは、リンク ソースにバインドされ、 IAdviseSink::OnRename メソッドを介して名前変更通知を受け取ると、両方のモニカーも更新します。 コンテナー アプリケーションでは、 IOleLink::SetSourceDisplayName メソッドを使用してリンクのモニカーを変更することもできます。

リンクされたオブジェクトの IPersistStorage::Save の実装により、相対モニカーと絶対モニカーの両方が保存されます。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー oleidl.h

関連項目

IOleLink

IOleLink::GetSourceMoniker

IOleLink::SetSourceDisplayName

IOleUILinkContainer

OleUIEditLinks