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


Интерфейс IAdviseSink (objidl.h)

Позволяет контейнерам и другим объектам получать уведомления об изменениях данных, просматривать изменения и составные изменения документов, происходящие в интересующих объектах. Например, приложениям-контейнерам требуются такие уведомления, чтобы поддерживать кэшированные презентации связанных и внедренных объектов в актуальном состоянии. Вызовы методов IAdviseSink являются асинхронными, поэтому вызов отправляется, а затем выполняется следующая инструкция, не дожидаясь возврата вызова.

Для создания консультативного подключения объект, который получает уведомления, должен реализовывать IAdviseSink, а объекты, в которых он заинтересован, должны реализовывать IOleObject::Advise и IDataObject::D Advise. Внутрипроцессные объекты и обработчики также могут реализовывать IViewObject::SetAdvise. Объекты, реализующие IOleObject , должны поддерживать все разумные методы рекомендаций. Чтобы упростить уведомления о рекомендациях, OLE предоставляет реализации IDataAdviseHolder и IOleAdviseHolder, которые отслеживают подключения рекомендаций и отправляют уведомления в соответствующие приемники через указатели на интерфейсы IAdviseSink . IViewObject (и его методы рекомендаций) реализован в обработчике по умолчанию.

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

Вызов этого метода Регистрация для получения этих уведомлений
IOleObject::Advise При сохранении, закрытии или переименовании документа.
IDataObject::D Advise При изменении данных документа.
IViewObject::SetAdvise При изменении представления документа.
 

При возникновении события, применимого к зарегистрированным типу уведомлений, приложение объекта вызывает соответствующий метод IAdviseSink . Например, когда внедренный объект закрывается, он вызывает метод IAdviseSink::OnClose для уведомления своего контейнера. Эти уведомления являются асинхронными и происходят после событий, которые их активируют.

Наследование

Интерфейс IAdviseSink наследуется от интерфейса IUnknown . IAdviseSink также имеет следующие типы элементов:

Методы

Интерфейс IAdviseSink содержит следующие методы.

 
IAdviseSink::OnClose

Вызывается сервером для уведомления всех зарегистрированных приемников рекомендаций о том, что объект изменился из запущенного в загруженное состояние.
IAdviseSink::OnDataChange

Вызывается сервером для уведомления объекта данных, зарегистрированного в настоящее время, сообщает приемникам, что данные в объекте изменились.
IAdviseSink::OnRename

Вызывается сервером для уведомления всех зарегистрированных приемников рекомендаций о переименовании объекта.
IAdviseSink::OnSave

Вызывается сервером для уведомления всех зарегистрированных приемников рекомендаций о сохранении объекта.
IAdviseSink::OnViewChange

Уведомляет зарегистрированные приемники рекомендаций объекта о том, что его представление изменилось.

Требования

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

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

IAdviseSink2

IAdviseSinkEx

IDataAdviseHolder

IDataObject::D Advise

IOleAdviseHolder

IOleObject::Advise

IUnknown

IViewObject::SetAdvise