IViewObject::SetAdvise 方法 (oleidl.h)

在视图对象与建议接收器之间建立连接,以便可以通知建议接收器对象视图中的更改。

语法

HRESULT SetAdvise(
  [in] DWORD       aspects,
  [in] DWORD       advf,
  [in] IAdviseSink *pAdvSink
);

parameters

[in] aspects

正在为其设置咨询连接的视图。 有效值取自枚举 DVASPECT。 有关详细信息,请参阅 DVASPECT 枚举。

[in] advf

包含一组用来控制通知连接的标志。 有效值来自枚举 ADVF。 但是,只有部分可能的 ADVF 值与此方法相关。 下表简要介绍了相关值。 有关更详细的说明,请参阅 ADVF 枚举。

含义
ADVF_ONLYONCE
导致通知连接在发送第一个通知后被销毁。
ADVF_PRIMEFIRST
无论数据是否已从其当前状态更改,都会导致发送初始通知。
 
注意 可以将ADVF_ONLYONCE和ADVF_PRIMEFIRST组合在一起,以提供对 IDataObject::GetData 的异步调用。
 

[in] pAdvSink

指向要通知更改的咨询接收器上的 IAdviseSink 接口的指针。 NULL 值将删除任何现有的咨询连接。

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
OLE_E_ADVISENOTSUPPORTED
不支持通知。
DV_E_DVASPECT
dwAspect 的值无效。
E_INVALIDARG
提供的一个或多个值无效。
E_OUTOFMEMORY
可用于此操作的内存不足。

注解

请求对视图对象执行绘制操作的容器应用程序还可以注册 到 IViewObject::SetAdvise 方法,以在视图对象的表示形式更改时收到通知。 若要了解对象的基础数据何时更改,必须单独调用 IDataObject::D Advise

若要删除现有的咨询连接,请调用 IViewObject::SetAdvise 方法,并将 pAdvSink 设置为 NULL

如果视图对象发生更改,则会通过其 IAdviseSink::OnViewChange 方法调用相应的建议接收器。

在任何时候,给定的视图对象只能支持一个通知连接。 因此,当调用 IViewObject::SetAdvise 并且视图对象已持有建议接收器指针时,OLE 将在注册新指针之前释放现有指针。

要求

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

请参阅

ADVF

IAdviseSink

IViewObject

IViewObject::GetAdvise