IDataAdviseHolder::Advise 方法 (objidl.h)

在建议接收器与用于接收通知的数据对象之间创建连接。

语法

HRESULT Advise(
  [in]  IDataObject *pDataObject,
  [in]  FORMATETC   *pFetc,
  [in]  DWORD       advf,
  [in]  IAdviseSink *pAdvise,
  [out] DWORD       *pdwConnection
);

参数

[in] pDataObject

指向请求通知的数据对象上的 IDataObject 接口的指针。 如果此对象中的数据发生更改,则会向已请求通知的建议接收器发送通知。

[in] pFetc

指向 FORMATETC 结构的指针,该结构包含请求通知的建议接收器感兴趣的指定格式、介质和目标设备。 例如,仅当数据对象中数据的位图表示形式发生更改时,一个接收器可能才想要知道。 另一个接收器可能只对同一对象的图元文件格式感兴趣。 当相关数据发生更改时,每个建议接收器都会收到通知。 发生通知时,此数据将传回建议接收器。

[in] advf

一组控制咨询连接的标志。 可能的值来自 ADVF 枚举。 但是,只有部分可能的 ADVF 值与此方法相关。 下表简要描述了相关值:可在 ADVF 枚举的说明中找到更详细的说明。

含义
ADVF_NODATA
要求不随通知一起发送任何数据。
ADVF_ONLYONCE
导致通知连接在发送第一个通知后被销毁。 代表调用方对 IDataAdviseHolder::Unadvise 进行隐式调用以删除连接。
ADVF_PRIMEFIRST
无论数据是否已从其当前状态更改,都会导致发送初始通知。
ADVF_DATAONSTOP
使用 ADVF_NODATA 指定时,此标志会导致在销毁数据对象之前发送包含数据的最后一个通知。 如果未指定ADVF_NODATA,则此标志无效。

[in] pAdvise

指向接收更改通知的通知接收器上的 IAdviseSink 接口的指针。

[out] pdwConnection

指向变量的指针,该变量接收标识此连接的令牌。 调用对象稍后可以通过将此令牌传递给 IDataAdviseHolder::Unadvise 来删除咨询连接。 如果此值为零,则未建立连接。

返回值

此方法在成功时返回S_OK。

注解

通过此方法建立的连接,咨询接收器可以在调用 IAdviseSink::OnDataChange 时接收将来的通知。

对象发出对 IDataObject::D Advise 的调用,以请求有关相关格式、介质或目标设备的更改的通知。 此数据在 pFormatetc 参数中指定。 DAdvise 方法通常实现为调用 IDataAdviseHolder::Advise,以将设置和跟踪连接的任务委托给建议持有者。 当格式、中型设备或目标设备发生更改时,数据对象会调用 IDataAdviseHolder::SendOnDataChange 来发送必要的通知。

可以通过在调用 IDataAdviseHolder::Unadvise 中传递 pdwConnection 中的值来删除已建立的连接。

要求

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

另请参阅

CreateDataAdviseHolder

IDataAdviseHolder

IDataObject::D Advise