IAdviseSink
The IAdviseSink
interface enables containers and other objects to receive notifications of data
changes, view changes, and compound-document changes occurring in objects of
interest. Container applications, for example, require such notifications to
keep cached presentations of their linked and embedded objects up-to-date.
Calls to IAdviseSink methods are asynchronous, so the call is sent and
then the next instruction is executed without waiting for the call s return.
For an
advisory connection to exist, the object that is to receive notifications must
implement IAdviseSink, and the objects in which it is interested must
implement IOleObject::Advise
As shown in
the following table, an object that has implemented an advise sink registers
its interest in receiving certain types of notifications by calling the
appropriate method:
Call
This Method |
To
Register for These Notifications |
IOleObject::Advise |
When a
document is saved, closed, or renamed. |
IDataObject::DAdvise |
When a
document s data changes. |
IViewObject::SetAdvise |
When a
document s presentation changes. |
When an event
occurs that applies to a registered notification type, the object application
calls the appropriate IAdviseSink method. For example, when an embedded
object closes, it calls the IAdviseSink::OnClose
When to Implement
Objects, such
as container applications and compound documents, implement IAdviseSink
to receive notification of changes in data, presentation, name, or state of
their linked and embedded objects. Implementers register for one or more types
of notification, depending on their needs.
Notifications
of changes to an embedded object originate in the server and flow to the
container by way of the object handler. If the object is a linked object, the
OLE link object intercepts the notifications from the object handler and
notifies the container directly. All containers, the object handler, and the OLE
link object register for OLE notifications. The typical container also
registers for view notifications. Data notifications are usually sent to the
OLE link object and object handler.
When to Use
Servers call
the methods of IAdviseSink to notify objects with which they have an
advisory connection of changes in an object s data, view, name, or state.
Note OLE does not
permit synchronous calls in the implementation of asynchronous methods, so you
cannot make synchronous calls within any of the the IAdviseSink
interface s methods. For example, an implementation of IAdviseSink::OnDataChange cannot contain a call to IDataObject::GetData .
Methods in Vtable Order
IUnknown
Methods |
Description |
QueryInterface |
Returns
pointers to supported interfaces. |
AddRef |
Increments
reference count. |
Release |
Decrements
reference count. |
IAdviseSink
Methods |
Description |
OnDataChange |
Advises
that data has changed. |
OnViewChange |
Advises
that view of object has changed. |
OnRename |
Advises
that name of object has changed. |
OnSave |
Advises
that object has been saved to disk. |
OnClose |
Advises
that object has been closed. |
See Also