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 AdviseIDataAdviseHolder::Advise) 的数据咨询连接,此标志请求数据对象在调用 IAdviseSink::OnDataChange 时不发送数据。 更改通知的接收者稍后可以通过调用 IDataObject::GetData 来请求数据。 数据对象可以通过在 STGMEDIUM 参数中传递TYMED_NULL来接受请求,也可以提供数据。 例如,数据对象可能有多个通知连接,但并非所有连接都指定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 结合使用。 如果没有IAdviseSink::OnDataChange 为值,则当没有数据的 OnDataChange 调用到达接收器时,源可能已完成其关闭,并且可能无法访问数据。 如果正在传递,指定此值的接收器应接受 OnDataChange 中提供的数据,因为它们可能无法再获得检索数据的机会。

对于缓存连接,此标志指示对象应在对象关闭过程中更新缓存。

ADVF_DATAONSTOP不是视图咨询连接的有效标志。
ADVFCACHE_NOHANDLER
值: 8
ADVFCACHE_FORCEBUILTIN的同义词,使用频率更高。
ADVFCACHE_FORCEBUILTIN
值: 16
此值由执行对象绘制的 DLL 对象应用程序和对象处理程序使用。 ADVFCACHE_FORCEBUILTIN指示 OLE 缓存演示文稿数据,以确保缓存中存在演示文稿。 此值不是数据或视图咨询连接的有效标志。 对于缓存连接,此标志缓存仅需要 OLE (附带的代码或基础操作系统) 提供的数据,以便通过 IDataObject::GetDataIViewObject::D raw 生成数据。 通过指定此值,容器可以确保即使对象或处理程序代码不可用,也可以检索数据。
ADVFCACHE_ONSAVE
值: 32
对于缓存连接,此标志只在保存包含缓存的对象时更新缓存的表示形式。 当 OLE 对象从运行状态转换回加载状态 (时,缓存也会更新,因为后续保存操作需要重新运行对象) 。 此值不是数据或视图咨询连接的有效标志。

注解

对于数据或视图建议连接,在 IAdviseSink 实例与 IDataObjectIViewObject 实例之间建立连接时,容器使用 ADVF 常量。 这些连接是使用 IDataObject::D AdviseIDataAdviseHolder::AdviseIViewObject::SetAdvise 方法设置的。

对于缓存连接,常量在 IOleCache::Cache 方法中指定,以指示容器关于对象应如何更新其缓存的请求。

这些常量也用于 STATDATA 结构的 advf 成员中。 IEnumSTATDATA 使用此结构来描述枚举的连接,advf 成员指示在建立咨询或缓存连接时指定的标志。 当 STATDATA 用于 IOleObject::EnumAdvise 枚举器时, advf 成员是不确定的。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 objidl.h

请参阅

IDataAdviseHolder

IDataObject

IEnumSTATDATA

IOleCache

IViewObject