Méthode IOleLink ::BindToSource (oleidl.h)

Active la connexion à la source de lien en liant le moniker stocké dans l’objet lié.

Syntaxe

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

Paramètres

[in] bindflags

Spécifie la procédure à suivre si la source de lien a un CLSID différent de la dernière fois qu’elle a été liée. Si ce paramètre est égal à zéro et que les CLSID sont différents, la méthode échoue et retourne OLE_E_CLASSDIFF. Si la valeur OLELINKBIND_EVENIFCLASSDIFF de l’énumération OLELINKBIND est spécifiée et que les CLSID sont différents, la méthode se lie correctement et met à jour le CLSID stocké dans l’objet lié.

[in] pbc

Pointeur vers l’interface IBindCtx sur le contexte de liaison à utiliser dans cette opération de liaison. Ce paramètre peut être NULL. Le contexte de liaison met en cache les objets liés pendant le processus de liaison, contient des paramètres qui s’appliquent à toutes les opérations utilisant le contexte de liaison et fournit les moyens par lesquels l’implémentation de liaison doit récupérer des informations sur son environnement. Pour plus d’informations, consultez IBindCtx.

Valeur retournée

Cette méthode retourne S_OK en cas de réussite. Les autres valeurs de retour possibles sont les suivantes.

Code de retour Description
OLE_E_CLASSDIFF
La source de lien n’était pas liée, car son CLSID a changé. Cette erreur est retournée uniquement si l’indicateur OLELINKBIND_EVENIFCLASSDIFF n’est pas spécifié dans le paramètre bindflags .
MK_E_NOOBJECT
La source de lien est introuvable ou (si le moniker de la source de lien est un composite) un objet intermédiaire identifié dans le composite est introuvable.
E_UNSPEC
Le moniker du lien est NULL.
 

La liaison du moniker peut nécessiter l’appel de la fonction CreateBindCtx ; par conséquent, cette méthode peut retourner des erreurs générées par CreateBindCtx.

Remarques

Notes aux appelants

En règle générale, votre application conteneur n’a pas besoin d’appeler directement la méthode IOleLink ::BindToSource . Lorsqu’il est nécessaire d’activer la connexion à la source de lien, votre conteneur appelle généralement IOleObject ::D oVerb, IOleObject ::Update ou IOleLink ::Update. L’implémentation de ces méthodes par l’objet lié appelle IOleLink ::BindToSource. Votre conteneur peut également appeler la fonction OleRun , qui appelle IOleLink ::BindToSource lorsqu’elle est appelée sur un objet lié.

Dans chacun des exemples répertoriés précédemment, dans lesquels IOleLink ::BindToSource est appelé indirectement, le paramètre bindflags est défini sur zéro. Par conséquent, ces appels peuvent échouer avec l’erreur OLE_E_CLASSDIFF si la classe de la source de lien est différente de celle de la dernière fois que l’objet lié a été lié. Cela peut se produire, par exemple, si la source de lien d’origine était une feuille de calcul Lotus incorporée qu’un utilisateur final a ensuite convertie (à l’aide de la boîte de dialogue Modifier le type) en feuille de calcul Excel.

Si vous souhaitez que votre conteneur soit lié même si la source de lien a désormais un CLSID différent, vous pouvez appeler IOleLink ::BindToSource directement et spécifier OLELINKBIND_EVENIFCLASSDIFF pour le paramètre bindflags. Cet appel lie à la source du lien et met à jour le CLSID de l’objet link. Votre conteneur peut également supprimer le lien existant et utiliser la fonction OleCreateLink pour créer un objet lié.

Notes aux implémenteurs

L’objet lié met en cache le pointeur d’interface vers la source de lien acquise lors de la liaison.

L’implémentation IOleLink ::BindToSource de l’objet lié tente d’abord de lier à l’aide d’un moniker composé du moniker du document composé avec le moniker relatif de la source de lien. En cas de réussite, il met à jour le moniker absolu du lien. Sinon, il tente de lier à l’aide du moniker absolu, en mettant à jour le moniker relatif en cas de réussite.

Si IOleLink ::BindToSource est lié à la source de lien, il appelle l’implémentation IOleContainer ::LockContainer du document composé composé pour conserver le document composé contenant actif pendant l’exécution de la source de lien. IOleLink ::BindToSource appelle également les implémentations IOleObject ::Advise et IDataObject ::D Advise de la source de lien pour configurer des connexions de conseil. L’implémentation IOleLink ::UnbindSource déverrouille le conteneur et supprime les connexions d’avis.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête oleidl.h

Voir aussi

IDataObject ::D Advise

IOleContainer ::LockContainer

IOleLink

IOleLink ::UnbindSource

IOleLink ::Update

IOleObject ::Advise

IOleObject ::D oVerb

IOleObject ::Update

OleRun