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
提供的 pformatetcadvf 参数无效。
E_UNEXPECTED
发生意外错误。
E_OUTOFMEMORY
可用于操作的内存不足。
CACHE_S_FORMATETC_NOTSUPPORTED
缓存已创建,但对象应用程序不支持指定的格式。 即使不支持格式,缓存创建也会成功,从而允许调用方填充缓存。 但是,如果调用方不需要保留缓存,请调用 IOleCache::Uncache
CACHE_S_SAMECACHE
传递给 IOleCache::UncacheFORMATETC 已存在缓存。 在这种情况下,会将新的建议标志分配给缓存,并返回以前分配的连接标识符。
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 组合,则这些值的含义如下。

ADVF 值 说明
ADVF_NODATA 缓存不会因对正在运行的对象所做的更改而更新。 相反,容器将通过显式调用 IOleCache::SetDataIDataObject::SetDataIOleCache2::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
标头 oleidl.h

另请参阅

IOleCache

IOleCache::Uncache