Compartir a través de


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

Activa la conexión al origen del vínculo enlazando el moniker almacenado en el objeto vinculado.

Sintaxis

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

Parámetros

[in] bindflags

Especifica cómo continuar si el origen del vínculo tiene un CLSID diferente de la última vez que estaba enlazado. Si este parámetro es cero y los CLSID son diferentes, el método produce un error y devuelve OLE_E_CLASSDIFF. Si se especifica el valor OLELINKBIND_EVENIFCLASSDIFF de la enumeración OLELINKBIND y los CLSID son diferentes, el método se enlaza correctamente y actualiza el CLSID almacenado en el objeto vinculado.

[in] pbc

Puntero a la interfaz IBindCtx en el contexto de enlace que se va a usar en esta operación de enlace. Este parámetro puede ser NULL. El contexto de enlace almacena en caché los objetos enlazados durante el proceso de enlace, contiene parámetros que se aplican a todas las operaciones mediante el contexto de enlace y proporciona los medios por los que la implementación de enlace debe recuperar información sobre su entorno. Para obtener más información, vea IBindCtx.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
OLE_E_CLASSDIFF
El origen del vínculo no estaba enlazado porque su CLSID ha cambiado. Este error solo se devuelve si no se especifica la marca OLELINKBIND_EVENIFCLASSDIFF en el parámetro bindflags .
MK_E_NOOBJECT
No se encontró el origen del vínculo o (si el moniker del origen del vínculo es compuesto), no se encontró ningún objeto intermedio identificado en la composición.
E_UNSPEC
El moniker del vínculo es NULL.
 

Enlazar el moniker podría requerir llamar a la función CreateBindCtx ; por lo tanto, este método puede devolver errores generados por CreateBindCtx.

Comentarios

Notas a los autores de llamadas

Normalmente, la aplicación contenedora no necesita llamar directamente al método IOleLink::BindToSource . Cuando sea necesario activar la conexión al origen del vínculo, el contenedor normalmente llama a IOleObject::D oVerb, IOleObject::Update o IOleLink::Update. La implementación del objeto vinculado de estos métodos llama a IOleLink::BindToSource. El contenedor también puede llamar a la función OleRun , que llama a IOleLink::BindToSource cuando se llama a en un objeto vinculado.

En cada uno de los ejemplos enumerados anteriormente, en los que se llama indirectamente a IOleLink::BindToSource , el parámetro bindflags se establece en cero. Por lo tanto, estas llamadas pueden producir un error de OLE_E_CLASSDIFF si la clase del origen del vínculo es diferente de la que era la última vez que se enlazaba el objeto vinculado. Esto podría ocurrir, por ejemplo, si el origen del vínculo original era una hoja de cálculo de Lotus incrustada que un usuario final había convertido posteriormente (mediante el cuadro de diálogo Cambiar tipo) en una hoja de cálculo de Excel.

Si desea que el contenedor se enlace aunque el origen del vínculo ahora tenga un CLSID diferente, puede llamar directamente a IOleLink::BindToSource y especificar OLELINKBIND_EVENIFCLASSDIFF para el parámetro bindflags. Esta llamada se enlaza al origen del vínculo y actualiza el CLSID del objeto de vínculo. Como alternativa, el contenedor puede eliminar el vínculo existente y usar la función OleCreateLink para crear un nuevo objeto vinculado.

Notas para los implementadores

El objeto vinculado almacena en caché el puntero de interfaz al origen del vínculo adquirido durante el enlace.

La implementación de IOleLink::BindToSource del objeto vinculado intenta enlazar primero mediante un moniker formado por el moniker del documento compuesto compuesto compuesto con el moniker relativo del origen del vínculo. Si se ejecuta correctamente, actualiza el moniker absoluto del vínculo. De lo contrario, intenta enlazar mediante el moniker absoluto, actualizando el moniker relativo si se ejecuta correctamente.

Si IOleLink::BindToSource se enlaza al origen del vínculo, llama a la implementación IOleContainer::LockContainer del documento compuesto para mantener activo el documento compuesto contenedor mientras se ejecuta el origen del vínculo. IOleLink::BindToSource también llama a las implementaciones IOleObject::Advise e IDataObject::D Advise del origen del vínculo para configurar conexiones de asesoramiento. La implementación de IOleLink::UnbindSource desbloquea el contenedor y elimina las conexiones de asesoramiento.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado oleidl.h

Consulte también

IDataObject::D Advise

IOleContainer::LockContainer

IOleLink

IOleLink::UnbindSource

IOleLink::Update

IOleObject::Advise

IOleObject::D oVerb

IOleObject::Update

OleRun