IAdviseSink 接口 (objidl.h)
使容器和其他对象能够接收相关对象中发生的数据更改、视图更改和复合文档更改的通知。 例如,容器应用程序需要此类通知,以使其链接和嵌入对象的缓存演示文稿保持最新。 对 IAdviseSink 方法的调用是异步的,因此发送调用,然后执行下一个指令,而无需等待调用的返回。
若要存在咨询连接,要接收通知的对象必须实现 IAdviseSink,而它感兴趣的对象必须实现 IOleObject::Advise 和 IDataObject::D Advise。 进程内对象和处理程序还可以实现 IViewObject::SetAdvise。 实现 IOleObject 的对象必须支持所有合理的咨询方法。 为了简化咨询通知,OLE 提供了 IDataAdviseHolder 和 IOleAdviseHolder 的实现,它们跟踪咨询连接,并通过指向其 IAdviseSink 接口的指针将通知发送到适当的接收器。 IViewObject (及其咨询方法) 在默认处理程序中实现。
如下表所示,已实现建议接收器的对象通过调用适当的方法来注册其对接收某些类型通知的兴趣。
调用此方法 | 注册这些通知 |
---|---|
IOleObject::Advise | 保存、关闭或重命名文档时。 |
IDataObject::D Advise | 文档的数据发生更改时。 |
IViewObject::SetAdvise | 文档的演示文稿更改时。 |
当发生适用于已注册通知类型的事件时,对象应用程序将调用相应的 IAdviseSink 方法。 例如,当嵌入对象关闭时,它会调用 IAdviseSink::OnClose 方法来通知其容器。 这些通知是异步的,发生在触发它们的事件之后。
继承
IAdviseSink 接口继承自 IUnknown 接口。 IAdviseSink 也有以下类型的成员:
方法
IAdviseSink 接口具有这些方法。
IAdviseSink::OnClose 由服务器调用,以通知所有已注册的咨询接收器对象已从运行状态更改为加载状态。 |
IAdviseSink::OnDataChange 由服务器调用,以通知数据对象的当前注册接收器,该对象中的数据已更改。 |
IAdviseSink::OnRename 由服务器调用,以通知所有已注册的咨询接收器对象已重命名。 |
IAdviseSink::OnSave 由服务器调用,以通知所有已注册的咨询接收器对象已保存。 |
IAdviseSink::OnViewChange 通知对象的已注册建议接收器其视图已更改。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | objidl.h |