Перечисление ADVF (objidl.h)

Флаги, управляющие кэшированием и уведомлением об изменениях в данных.

Синтаксис

typedef enum tagADVF {
  ADVF_NODATA = 1,
  ADVF_PRIMEFIRST = 2,
  ADVF_ONLYONCE = 4,
  ADVF_DATAONSTOP = 64,
  ADVFCACHE_NOHANDLER = 8,
  ADVFCACHE_FORCEBUILTIN = 16,
  ADVFCACHE_ONSAVE = 32
} ADVF;

Константы

 
ADVF_NODATA
Значение: 1
Для подключений рекомендаций по данным (IDataObject::D Advise или IDataAdviseHolder::Advise) этот флаг запрашивает, чтобы объект данных не отправлял данные при вызове метода IAdviseSink::OnDataChange. Получатель уведомления об изменении может позже запросить данные, вызвав метод IDataObject::GetData. Объект данных может выполнить запрос, передав TYMED_NULL в параметре STGMEDIUM, или он может предоставить данные в любом случае. Например, объект данных может иметь несколько консультативных подключений, не все из которых указаны ADVF_NODATA. В этом случае объект может отправлять одно и то же уведомление всем подключениям. Независимо от запроса контейнера реализация IAdviseSink должна проверка параметру STGMEDIUM, так как она отвечает за освобождение среды, если она не TYMED_NULL.

Для подключений к кэшу (IOleCache::Cache) этот флаг запрашивает, чтобы кэш не обновлялся путем изменений, внесенных в выполняющийся объект. Вместо этого контейнер обновит кэш, явно вызвав IOleCache::SetData. Эта ситуация обычно возникает, когда кэшируется знаковый аспект объекта.

ADVF_NODATA не является допустимым флагом для подключений с рекомендациями по просмотру (IViewObject::SetAdvise) и возвращает E_INVALIDARG.
ADVF_PRIMEFIRST
Значение: 2
Запрашивает, чтобы объект не ждал изменения данных или представления перед первоначальным вызовом IAdviseSink::OnDataChange (для подключений к данным или просмотру рекомендаций) или обновлением кэша (для подключений к кэшу). Этот параметр, используемый с ADVF_ONLYONCE, предоставляет асинхронный вызов IDataObject::GetData .
ADVF_ONLYONCE
Значение: 4
Требует, чтобы объект создавал только одно уведомление об изменении или обновление кэша перед удалением соединения.

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

Для уведомлений об изменении данных сочетание ADVF_ONLYONCE и ADVF_PRIMEFIRST фактически обеспечивает асинхронный вызов IDataObject::GetData .

При использовании с кэшированием ADVF_ONLYONCE обновляет кэш только один раз при получении первого уведомления IAdviseSink::OnDataChange . После завершения обновления консультативное подключение между объектом и кэшем отключается. Исходный объект для соединения рекомендаций вызывает метод Release .
ADVF_DATAONSTOP
Значение: 64
При использовании вспомогательных соединений с данными обеспечивает доступ к данным. Этот флаг указывает, что при закрытии объекта данных он должен вызывать , предоставляя данные при вызове . Как правило, это значение используется в сочетании с ADVF_NODATA. Без thIAdviseSink::OnDataChange имеет значение, к тому времени, когда вызов OnDataChange без данных достигает приемника, источник мог завершить работу и данные могут быть недоступны. Приемники, указывающие это значение, должны принимать данные, предоставленные в OnDataChange , если они передаются, так как они могут не получить еще одну возможность получить его.

Для подключений к кэшу этот флаг указывает, что объект должен обновить кэш при закрытии объекта.

ADVF_DATAONSTOP не является допустимым флагом для подключений к просмотру рекомендаций.
ADVFCACHE_NOHANDLER
Значение: 8
Синоним ADVFCACHE_FORCEBUILTIN, который используется чаще.
ADVFCACHE_FORCEBUILTIN
Значение: 16
Это значение используется приложениями объектов DLL и дескрипторами объектов, которые выполняют рисунок своих объектов. ADVFCACHE_FORCEBUILTIN указывает OLE кэшировать данные презентации, чтобы обеспечить наличие презентации в кэше. Это значение не является допустимым флагом для подключений к данным или представлениям рекомендаций. Для подключений к кэшу этот флаг кэширует данные, требующие наличия только кода, поставляемого с OLE (или базовой операционной системой), чтобы создать его с помощью IDataObject::GetData или IViewObject::D raw. Указав это значение, контейнер может гарантировать, что данные можно извлечь, даже если код объекта или обработчика недоступен.
ADVFCACHE_ONSAVE
Значение: 32
Если используются соединения с кэшем, этот флаг обновляет кэшированное представление только при сохранении объекта, содержащего кэш. Кэш также обновляется при переходе объекта OLE из запущенного состояния обратно в загруженное состояние (так как последующая операция сохранения потребует повторного запуска объекта). Это значение не является допустимым флагом для подключений к данным или представлениям рекомендаций.

Комментарии

Для подключения к данным или представлениям контейнер использует константы ADVF при настройке соединения между экземпляром IAdviseSink и экземпляром IDataObject или IViewObject . Эти подключения настраиваются с помощью методов IDataObject::D Advise, IDataAdviseHolder::Advise или IViewObject::SetAdvise .

Для подключения к кэшированию константы указываются в методе IOleCache::Cache , чтобы указать запросы контейнера о том, как объект должен обновлять свой кэш.

Эти константы также используются в элементе advf структуры STATDATA . Эта структура используется В IEnumSTATDATA для описания перечисленных подключений, а член advf указывает флаги, которые были указаны при установке соединения рекомендаций или кэша. Если для перечислителя IOleObject::EnumAdvise используется STATDATA, член advf является неопределенным.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть objidl.h

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

IDataAdviseHolder

Idataobject

IEnumSTATDATA

IOleCache

IViewObject