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


Метод IOleCache::Cache (oleidl.h)

Указывает формат и другие данные для кэширования во внедренном объекте.

Синтаксис

HRESULT Cache(
  [in]  FORMATETC *pformatetc,
  [in]  DWORD     advf,
  [out] DWORD     *pdwConnection
);

Параметры

[in] pformatetc

Указатель на структуру FORMATETC , которая указывает формат и другие данные для кэширования. Кэширование представлений задается путем передачи нулевого формата буфера обмена в pformatetc.

[in] advf

Группа флагов, управляющих кэшированием. Возможные значения поступают из перечисления ADVF . При использовании в этом контексте для кэша эти значения имеют определенные значения, которые описаны в разделе Примечания. Более подробное описание см. в перечислении ADVF .

[out] pdwConnection

Указатель на переменную, которая получает идентификатор этого соединения, который позже можно использовать для отключения кэширования (путем передачи его в IOleCache::Uncache). Если это значение равно 0, подключение не установлено. В реализации, предоставляемой OLE, для идентификаторов подключений используются ненулевое число.

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

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

Код возврата Описание
E_INVALIDARG
Указанные аргументы pformatetc или advf недопустимы.
E_UNEXPECTED
Произошла непредвиденная ошибка.
E_OUTOFMEMORY
Недостаточно памяти, доступной для операции.
CACHE_S_FORMATETC_NOTSUPPORTED
Кэш был создан, но объектное приложение не поддерживает указанный формат. Создание кэша выполняется успешно, даже если формат не поддерживается, что позволяет вызывающему объекту заполнить кэш. Если же вызывающей объекту не нужно хранить кэш, вызовите IOleCache::Uncache.
CACHE_S_SAMECACHE
Кэш уже существует для FORMATETC, переданного в IOleCache::Uncache. В этом случае новые флаги рекомендаций назначаются кэшу, и возвращается ранее назначенный идентификатор подключения.
DV_E_LINDEX
Недопустимое значение для pformatetc-lindex>; в настоящее время поддерживается только -1.
DV_E_TYMED
Недопустимое значение для pformatetc-tymed>.
DV_E_DVASPECT
Недопустимое значение для pformatetc-dwAspect>.
DV_E_CLIPFORMAT
Недопустимое значение для pformatetc-cfFormat>.
CO_E_NOTINITIALIZED
Хранилище кэша не инициализировано.
DV_E_DVTARGETDEVICE
Недопустимое значение для pformatetc-->ptd.
OLE_E_STATIC
Кэш — для статического объекта, и у него уже есть узел кэша.

Комментарии

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

pFormatetc->cfFormat == 0

Обработчик пользовательских объектов может отказаться от хранения данных в заданном формате. Вместо этого он может синтезировать его по запросу по запросу.

Значение advf указывает элемент перечисления ADVF . Если в этом контексте используется одно из этих значений (или сочетание or'd из нескольких значений), эти значения означают следующее.

Значение ADVF Описание
ADVF_NODATA Кэш не должен обновляться с помощью изменений, внесенных в запущенный объект. Вместо этого контейнер обновит кэш, явно вызвав IOleCache::SetData, IDataObject::SetData или IOleCache2::UpdateCache. Этот флаг обычно используется при кэшировании знакового аспекта объекта.
ADVF_ONLYONCE Обновите кэш только один раз. После завершения обновления консультативное подключение между объектом и кэшем отключается. Исходный объект для соединения рекомендаций вызывает метод Release .
ADVF_PRIMEFIRST Объект не ожидает изменения данных или представления перед обновлением кэша. Или с ADVF_ONLYONCE этот параметр предоставляет асинхронный вызов IDataObject::GetData .
ADVFCACHE_NOHANDLER Синоним для ADVFCACHE_FORCEBUILTIN.
ADVFCACHE_FORCEBUILTIN Используется приложениями объектов DLL и обработчиками объектов, которые рисуют свои объекты для кэширования данных презентации для обеспечения представления в кэше. Это гарантирует, что данные можно получить, даже если код объекта или обработчика недоступен.
ADVFCACHE_ONSAVE Обновления кэшированное представление только при сохранении объекта, содержащего кэш. Кэш также обновляется при переходе объекта OLE из состояния выполнения обратно в загруженное состояние (так как последующая операция сохранения потребует повторного запуска объекта).

Требования

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

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

IOleCache

IOleCache::Uncache