Поделиться через


Метод IOleLink::BindToSource (oleidl.h)

Активирует подключение к источнику ссылки путем привязки моникера, хранящегося в связанном объекте.

Синтаксис

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

Параметры

[in] bindflags

Указывает, как продолжить работу, если у источника ссылки есть идентификатор CLSID, отличный от момента последней привязки. Если этот параметр равен нулю и идентификаторы CLSID отличаются, метод завершается ошибкой и возвращает OLE_E_CLASSDIFF. Если указано значение OLELINKBIND_EVENIFCLASSDIFF из перечисления OLELINKBIND и идентификаторы CLSID отличаются, метод успешно привязывается и обновляет идентификатор CLSID, хранящийся в связанном объекте.

[in] pbc

Указатель на интерфейс IBindCtx в контексте привязки, который будет использоваться в этой операции привязки. Этот параметр может принимать значение NULL. Контекст привязки кэширует объекты, привязанные к процессу привязки, содержит параметры, которые применяются ко всем операциям, использующим контекст привязки, и предоставляет средства, с помощью которых реализация привязки должна получать сведения о своей среде. Дополнительные сведения см. в разделе IBindCtx.

Возвращаемое значение

Этот метод возвращает значение S_OK при успешном завершении. Другие возможные возвращаемые значения включают следующее.

Код возврата Описание
OLE_E_CLASSDIFF
Источник ссылки не был привязан, так как его ИДЕНТИФИКАТОР CLSID изменился. Эта ошибка возвращается, только если флаг OLELINKBIND_EVENIFCLASSDIFF не указан в параметре bindflags .
MK_E_NOOBJECT
Не удалось найти источник ссылки или (если моникер источника ссылки является составным) не удалось найти промежуточный объект, определенный в составной части.
E_UNSPEC
Моникер ссылки имеет значение NULL.
 

Привязка моникера может потребовать вызова функции CreateBindCtx ; Поэтому этот метод может возвращать ошибки, созданные CreateBindCtx.

Комментарии

Примечания к вызывающим абонентам

Как правило, приложению-контейнеру не требуется напрямую вызывать метод IOleLink::BindToSource . Если необходимо активировать подключение к источнику ссылки, контейнер обычно вызывает IOleObject::D oVerb, IOleObject::Update или IOleLink::Update. Реализация этих методов связанного объекта вызывает IOleLink::BindToSource. Контейнер также может вызывать функцию OleRun , которая вызывает IOleLink::BindToSource при вызове связанного объекта.

В каждом из перечисленных выше примеров, в которых IOleLink::BindToSource вызывается косвенно, параметр bindflags имеет значение 0. Следовательно, эти вызовы могут завершиться ошибкой OLE_E_CLASSDIFF, если класс источника ссылки отличается от класса, который был при последней привязке связанного объекта. Это может произойти, например, если исходным источником ссылки была внедренная электронная таблица Lotus, которую пользователь впоследствии преобразовал (с помощью диалогового окна Изменение типа) в электронную таблицу Excel.

Если вы хотите, чтобы контейнер привязылся, даже если источник ссылки теперь имеет другой ИДЕНТИФИКАТОР CLSID, можно вызвать IOleLink::BindToSource напрямую и указать OLELINKBIND_EVENIFCLASSDIFF для параметра bindflags. Этот вызов выполняет привязку к источнику ссылки и обновляет идентификатор CLSID объекта ссылки. Кроме того, контейнер может удалить существующую ссылку и использовать функцию OleCreateLink для создания нового связанного объекта.

Примечания для разработчиков

Связанный объект кэширует указатель интерфейса на источник ссылки, полученный во время привязки.

Реализация IOleLink::BindToSource связанного объекта сначала пытается выполнить привязку с помощью моникера, состоящего из моникера составного документа, состоящего из относительного моникера источника ссылки. В случае успешного выполнения обновляется абсолютный моникер ссылки. В противном случае он пытается выполнить привязку с помощью абсолютного моникера, обновляя относительный моникер в случае успешного выполнения.

Если IOleLink::BindToSource привязывается к источнику ссылки, он вызывает реализацию IOleContainer::LockContainer составного документа, чтобы сохранить содержащий составной документ активным во время работы источника ссылки. IOleLink::BindToSource также вызывает реализации IOleObject::Advise и IDataObject::D Advise источника ссылок для настройки консультативных подключений. Реализация IOleLink::UnbindSource разблокирует контейнер и удаляет консультативные подключения.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header oleidl.h

См. также раздел

IDataObject::D Advise

IOleContainer::LockContainer

IOleLink

IOleLink::UnbindSource

IOleLink::Update

IOleObject::Advise

IOleObject::D oVerb

IOleObject::Update

OleRun