IOleLink::BindToSource-Methode (oleidl.h)
Aktiviert die Verbindung mit der Linkquelle, indem der im verknüpften Objekt gespeicherte Moniker gebunden wird.
Syntax
HRESULT BindToSource(
[in] DWORD bindflags,
[in] IBindCtx *pbc
);
Parameter
[in] bindflags
Gibt an, wie sie vorgehen, wenn die Linkquelle über eine andere CLSID als beim letzten Gebundenen verfügt. Wenn dieser Parameter 0 ist und sich die CLSIDs unterscheiden, schlägt die Methode fehl und gibt OLE_E_CLASSDIFF zurück. Wenn der OLELINKBIND_EVENIFCLASSDIFF Wert aus der OLELINKBIND-Enumeration angegeben wird und sich die CLSIDs unterscheiden, wird die Methode erfolgreich gebunden und aktualisiert die im verknüpften Objekt gespeicherte CLSID.
[in] pbc
Ein Zeiger auf die IBindCtx-Schnittstelle im Bindungskontext, der in diesem Bindungsvorgang verwendet werden soll. Dieser Parameter kann NULL sein. Der Bindungskontext zwischenspeichert Objekte, die während des Bindungsprozesses gebunden sind, enthält Parameter, die für alle Vorgänge gelten, die den Bindungskontext verwenden, und stellt die Mittel bereit, mit denen die Bindungsimplementierung Informationen zu ihrer Umgebung abrufen soll. Weitere Informationen finden Sie unter IBindCtx.
Rückgabewert
Diese Methode gibt S_OK bei Erfolg zurück. Weitere mögliche Rückgabewerte:
Rückgabecode | Beschreibung |
---|---|
|
Die Linkquelle war nicht gebunden, da sich ihre CLSID geändert hat. Dieser Fehler wird nur zurückgegeben, wenn das flag OLELINKBIND_EVENIFCLASSDIFF im bindflags-Parameter nicht angegeben ist. |
|
Die Linkquelle konnte nicht gefunden werden, oder (wenn der Moniker der Linkquelle zusammengesetzt ist) konnte ein im Zusammengesetzten identifiziertes Zwischenobjekt nicht gefunden werden. |
|
Der Moniker des Links ist NULL. |
Das Binden des Monikers erfordert möglicherweise den Aufruf der CreateBindCtx-Funktion . Daher kann diese Methode Fehler zurückgeben, die von CreateBindCtx generiert wurden.
Hinweise
Hinweise für Anrufer
In der Regel muss Ihre Containeranwendung die IOleLink::BindToSource-Methode nicht direkt aufrufen. Wenn die Verbindung mit der Linkquelle aktiviert werden muss, ruft Ihr Container in der Regel IOleObject::D oVerb, IOleObject::Update oder IOleLink::Update auf. Die Implementierung dieser Methoden durch das verknüpfte Objekt ruft IOleLink::BindToSource auf. Ihr Container kann auch die OleRun-Funktion aufrufen, die IOleLink::BindToSource aufruft, wenn sie für ein verknüpftes Objekt aufgerufen wird.In jedem der zuvor aufgeführten Beispiele, in denen IOleLink::BindToSource indirekt aufgerufen wird, wird der bindflags-Parameter auf 0 festgelegt. Folglich können diese Aufrufe mit dem OLE_E_CLASSDIFF Fehler fehlschlagen, wenn sich die Klasse der Linkquelle von dem unterscheidet, als das verknüpfte Objekt zuletzt gebunden wurde. Dies kann beispielsweise vorkommen, wenn die ursprüngliche Linkquelle eine eingebettete Lotus-Kalkulationstabelle war, die ein Endbenutzer anschließend (mithilfe des Dialogfelds Typ ändern) in eine Excel-Kalkulationstabelle konvertiert hatte.
Wenn Ihr Container gebunden werden soll, obwohl die Linkquelle jetzt über eine andere CLSID verfügt, können Sie IOleLink::BindToSource direkt aufrufen und OLELINKBIND_EVENIFCLASSDIFF für den bindflags-Parameter angeben. Dieser Aufruf bindet an die Linkquelle und aktualisiert die CLSID des Linkobjekts. Alternativ kann Ihr Container den vorhandenen Link löschen und die OleCreateLink-Funktion verwenden, um ein neues verknüpftes Objekt zu erstellen.
Hinweise zu Implementierern
Das verknüpfte Objekt speichert den Schnittstellenzeiger auf die Linkquelle zwischen, die während der Bindung abgerufen wurde.Die IOleLink::BindToSource-Implementierung des verknüpften Objekts versucht zunächst, eine Bindung mithilfe eines Monikers zu verwenden, der aus dem Moniker des zusammengesetzten Dokuments besteht, der mit dem relativen Moniker der Linkquelle zusammengesetzt ist. Bei erfolgreicher Ausführung wird der absolute Moniker des Links aktualisiert. Andernfalls wird versucht, die Bindung mithilfe des absoluten Monikers zu binden, wobei bei erfolgreicher Ausführung der relative Moniker aktualisiert wird.
Wenn IOleLink::BindToSource an die Linkquelle gebunden ist, wird die IOleContainer::LockContainer-Implementierung des zusammengesetzten Dokuments aufgerufen, um das enthaltende zusammengesetzte Dokument während der Ausführung der Linkquelle am Leben zu halten. IOleLink::BindToSource ruft auch die IOleObject::Advise - und IDataObject::D Advise-Implementierungen der Linkquelle auf, um Beratungsverbindungen einzurichten. Die IOleLink::UnbindSource-Implementierung entsperrt den Container und löscht die Beratungsverbindungen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | oleidl.h |