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::SetLinkSource と IOleUILinkContainer::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 |