OLE object DataObject When implemented, enables the transfer of data, and notification of data changes. It must be implemented by objects that are to support drag-and-drop, being copied to or pasted from the clipboard, or being linked or embedded in a containing document. ObjectWithSite Allows the caller to inform the OLE object of its site. This functionality is also provided by OleObject, but ObjectWithSite can be used, when supported, if OleObject is not used for other matters. OleCache Allows visual presentations from a DataObject to be cached. This allows an embedded object to store its visual representation, thus enabling it to be displayed later without needing to start the application that was used to create the object. Usually the stock implementation is used. OleCache2 Provides more fine-grained control over caching. Usually the stock implementation is used. OleCacheControl This interface is not called by the container, but internally by the object to allow it to receive notifications of when its DataObject is running, thereby allowing it to subscribe to notifications of data changes of that object and thus allowing it to update the cached presentation properly. Usually the stock implementation is used. OleDocument Allows the OLE object to support multiple views of its data, as well as a few related functions. OleDocumentView A document object (an object that implements OleDocument) implements this interface for every view. It allows the caller to set the site of the object, query and set the size of the object and to show and activate it, as well as some related functions. OleWindow OleInPlaceActiveObject Called by the outermost container of an object to interact with it while it's active, e.g. to process accelerator keys in the container's message queue that are meant for the contained object. OleInPlaceObject Called by the container to activate or deactivate the object. IOleInPlaceObjectWindowless A windowless object is an object that doesn't have its own window but it instead displayed in its container's window. It is used by the container to relay messages received by the container's window that are intended for the contained object. For example, if the mouse is moved over a window, Windows places a mouse move message along with the mouse coordinates in the message queue of the window. If this window contains windowless embedded objects, the message may have to be relayed to such an object if the coordinates of the mouse-pointer are over this object. For similar reasons this interface also provides access to the object's DropTarget interface. OleLink Allows the object to support linking, e.g. by allowing the container to set the source of a linked object. Usually the stock implementation is used. OleObject Arguably the most important interface for an OLE object. For example, it allows the container to inform the object of its site, initialize the object from data, to open and close it, to query and set the size of the object, to ask for notifications on the container's AdviseSink and to execute objects defined as "verbs" on the object. These verbs often include "Open" or "Edit", but can also include other verbs. One of the verbs is defined to be the principal verb, and it is executed when the user double-clicks an object. ViewObject Allows an object to draw itself directly, without passing a DataObject to the container. For objects that support both DataObject and this interface, the underlying implementation is usually shared. ViewObject2 Additionally allows the caller to query the size of the object. ViewObjectEx Adds support for flicker-free drawing of transparent objects, hit-testing for objects with irregular shapes and setting the size of an object.
OLE object DataObject When implemented enables the transfer of data and notification of data changes It must be implemented by objects that are to support drag-and-drop being copied to or pasted from the clipboard or being linked or embedded in a containing document ObjectWithSite Allows the caller to inform the OLE object of its site This functionality is also provided by OleObject but ObjectWithSite can be used when supported if OleObject is not used for other matters OleCache Allows visual presentations from a DataObject to be cached This allows an embedded object to store its visual representation thus enabling it to be displayed later without needing to start the application that was used to create the object Usually the stock implementation is used OleCache2 Provides more fine-grained control over caching Usually the stock implementation is used OleCacheControl This interface is not called by the container but internally by the object to allow it to receive notifications of when its DataObject is running thereby allowing it to subscribe to notifications of data changes of that object and thus allowing it to update the cached presentation properly Usually the stock implementation is used OleDocument Allows the OLE object to support multiple views of its data as well as a few related functions OleDocumentView A document object (an object that implements OleDocument) implements this interface for every view It allows the caller to set the site of the object query and set the size of the object and to show and activate it as well as some related functions OleWindow OleInPlaceActiveObject Called by the outermost container of an object to interact with it while it's active eg to process accelerator keys in the container's message queue that are meant for the contained object OleInPlaceObject Called by the container to activate or deactivate the object IOleInPlaceObjectWindowless A windowless object is an object that doesn't have its own window but it instead displayed in its container's window It is used by the container to relay messages received by the container's window that are intended for the contained object For example if the mouse is moved over a window Windows places a mouse move message along with the mouse coordinates in the message queue of the window If this window contains windowless embedded objects the message may have to be relayed to such an object if the coordinates of the mouse-pointer are over this object For similar reasons this interface also provides access to the object's DropTarget interface OleLink Allows the object to support linking eg by allowing the container to set the source of a linked object Usually the stock implementation is used OleObject Arguably the most important interface for an OLE object For example it allows the container to inform the object of its site initialize the object from data to open and close it to query and set the size of the object to ask for notifications on the container's AdviseSink and to execute objects defined as "verbs" on the object These verbs often include "Open" or "Edit" but can also include other verbs One of the verbs is defined to be the principal verb and it is executed when the user double-clicks an object ViewObject Allows an object to draw itself directly without passing a DataObject to the container For objects that support both DataObject and this interface the underlying implementation is usually shared ViewObject2 Additionally allows the caller to query the size of the object ViewObjectEx Adds support for flicker-free drawing of transparent objects hit-testing for objects with irregular shapes and setting the size of an object