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

リンク オブジェクト内に格納されているモニカーをバインドして、リンク ソースへの接続をアクティブにします。

構文

HRESULT BindToSource(
  [in] DWORD    bindflags,
  [in] IBindCtx *pbc
);

パラメーター

[in] bindflags

リンク ソースが最後にバインドされたときとは異なる CLSID を持っている場合に続行する方法を指定します。 このパラメーターが 0 で CLSID が異なる場合、メソッドは失敗し、OLE_E_CLASSDIFFを返します。 OLELINKBIND 列挙体のOLELINKBIND_EVENIFCLASSDIFF値が指定されていて、CLSID が異なる場合、メソッドは正常にバインドされ、リンクされたオブジェクトに格納されている CLSID を更新します。

[in] pbc

このバインド操作で使用されるバインド コンテキスト上の IBindCtx インターフェイスへのポインター。 このパラメーターは、NULL でもかまいません。 バインド コンテキストは、バインド プロセス中にバインドされたオブジェクトをキャッシュし、バインド コンテキストを使用するすべての操作に適用されるパラメーターを含み、バインド実装がその環境に関する情報を取得する手段を提供します。 詳細については、「 IBindCtx」を参照してください。

戻り値

このメソッドは、成功したS_OKを返します。 その他の可能な戻り値は次のとおりです。

リターン コード 説明
OLE_E_CLASSDIFF
リンク ソースは CLSID が変更されたため、バインドされませんでした。 このエラーは、 bindflags パラメーターに OLELINKBIND_EVENIFCLASSDIFF フラグが指定されていない場合にのみ返されます。
MK_E_NOOBJECT
リンク ソースが見つからないか(リンク ソースのモニカーが複合の場合)、複合で識別された中間オブジェクトが見つかりませんでした。
E_UNSPEC
リンクのモニカーが NULL です
 

モニカーをバインドするには、 CreateBindCtx 関数の呼び出しが必要になる場合があります。したがって、このメソッドは CreateBindCtx によって生成されたエラーを返す場合があります。

注釈

呼び出し元へのメモ

通常、コンテナー アプリケーションは IOleLink::BindToSource メソッドを直接呼び出す必要はありません。 リンク ソースへの接続をアクティブ化する必要がある場合、コンテナーは通常 、IOleObject::D oVerbIOleObject::Update、または IOleLink::Update を呼び出します。 これらのメソッドのリンク オブジェクトの実装では 、IOleLink::BindToSource が呼び出されます。 コンテナーは OleRun 関数を呼び出すこともできます。この関数は、リンクオブジェクトで呼び出されたときに IOleLink::BindToSource を呼び出します。

IOleLink::BindToSource が間接的に呼び出される前に示した各例では、bindflags パラメーターは 0 に設定されます。 したがって、リンク ソースのクラスが、リンク オブジェクトが最後にバインドされた日時と異なる場合、これらの呼び出しはOLE_E_CLASSDIFF エラーで失敗する可能性があります。 これは、たとえば、元のリンク ソースが、エンド ユーザーが後で ([種類の変更] ダイアログ ボックスを使用して) Excel スプレッドシートに変換した埋め込み Lotus スプレッドシートであった場合などに発生する可能性があります。

リンク ソースに別の CLSID がある場合でもコンテナーをバインドする場合は、 IOleLink::BindToSource を直接呼び出し、bindflags パラメーターにOLELINKBIND_EVENIFCLASSDIFFを指定できます。 この呼び出しはリンク ソースにバインドされ、リンク オブジェクトの CLSID が更新されます。 または、コンテナーで既存のリンクを削除し、 OleCreateLink 関数を使用して新しいリンク オブジェクトを作成することもできます。

実装者へのメモ

リンク オブジェクトは、バインディング中に取得されたリンク ソースへのインターフェイス ポインターをキャッシュします。

リンク オブジェクトの IOleLink::BindToSource 実装は、まず、リンク ソースの相対モニカーで構成される複合ドキュメントのモニカーで構成されるモニカーを使用してバインドしようとします。 成功した場合は、リンクの絶対モニカーが更新されます。 それ以外の場合は、絶対モニカーを使用してバインドを試み、成功した場合は相対モニカーを更新します。

IOleLink::BindToSource がリンク ソースにバインドすると、複合ドキュメントの IOleContainer::LockContainer 実装が呼び出され、リンク ソースの実行中に含まれる複合ドキュメントが維持されます。 IOleLink::BindToSource は、リンク ソースの IOleObject::Advise および IDataObject::D Advise 実装も呼び出して、アドバイザリ接続を設定します。 IOleLink::UnbindSource 実装は、コンテナーのロックを解除し、アドバイザリ接続を削除します。

要件

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

こちらもご覧ください

IDataObject::D Advise

IOleContainer::LockContainer

IOleLink

IOleLink::UnbindSource

IOleLink::Update

IOleObject::Advise

IOleObject::D oVerb

IOleObject::Update

OleRun