The following interfaces are used to implement compound documents and perform data transfer between applications.

IAdviseSink Enables containers and other objects to receive notifications of data changes, view changes, and compound-document changes occurring in objects of interest.
IAdviseSink2 An extension to IAdviseSink that adds a method to handle a change in the moniker of a linked object.
IAdviseSinkEx An extension to IAdviseSink that adds the ability to notify the sink of changes in an object's view status.
IDataAdviseHolder Creates and manages advisory connections between a data object and one or more advise sinks.
IDataObject Enables data transfer and notification of changes in data.
IDropSource One of the interfaces you must implement to provide drag-and-drop operations in your application.
IDropSourceNotify Receives notifications when a user drags the mouse into or out of a potential drop target window.
IDropTarget One of the interfaces you must implement to provide drag-and-drop operations in your application.
IEnterpriseDropTarget When implemented by the drop target application, this interface gives the OLE drag and drop engine the ability to determine whether the drop target application intends to evaluate enterprise protection policy and gives the OLE drag and drop engine a way to provide the enterprise ID of the drop source application to the drop target application.
IEnumFORMATETC Enumerates the FORMATETC structures that define the formats and media supported by a given data object.
IEnumMoniker Enumerates the monikers in a table of monikers.
IEnumOleDocumentViews Enumerates the views supported by a document object.
IEnumOleUndoUnits Enumerates the undo units on the undo or redo stack.
IEnumOLEVERB Enumerates the different verbs available for an object in order of ascending verb number.
IEnumSTATDATA Enumerates the advisory connection information for a data object.
IObjectWithSite Provides a simple way to support communication between an object and its site in the container.
IOleAdviseHolder Manages advisory connections and compound document notifications in an object server.
IOleCache Provides control of the presentation data that is cached inside of an object.
IOleCache2 Enables object clients to selectively update each cache that was created with IOleCache::Cache.
IOleCacheControl Provides proper maintenance of caches.
IOleClientSite Provides an embedded object with information about the location and extent of its display site, its moniker, its user interface, and other resources provided by its container.
IOleCommandTarget Enables objects and their containers to dispatch commands to each other.
IOleContainer Enumerates objects in a compound document or lock a container in the running state.
IOleDocument Enables a document object to communicate to containers its ability to create views of its data.
IOleDocumentSite Enables a document that has been implemented as a document object to bypass the normal activation sequence for in-place-active objects and to directly instruct its client site to activate it as a document object.
IOleDocumentView Enables a container to communicate with each view supported by a document object.
IOleInPlaceActiveObject Provides a direct channel of communication between an in-place object and the associated application's outer-most frame window and the document window within the application that contains the embedded object.
IOleInPlaceFrame Controls the container's top-level frame window.
IOleInPlaceObject Manages the activation and deactivation of in-place objects, and determines how much of the in-place object should be visible.
IOleInPlaceObjectWindowless Enables a windowless object to process window messages and participate in drag and drop operations.
IOleInPlaceSite Manages interaction between the container and the object's in-place client site.
IOleInPlaceSiteEx Provides an additional set of activation and deactivation notification methods that enable an object to avoid unnecessary flashing on the screen when the object is activated and deactivated.
IOleInPlaceSiteWindowless Enables a windowless object to process window messages, participate in drag and drop operations, and to perform drawing operations.
IOleInPlaceUIWindow Negotiates border space on the document or frame window.
IOleLink Enables a linked object to provide its container with functions pertaining to linking.
IOleObject Enables an embedded object to provide basic functionality to, and communicates with, its container.
IOleParentUndoUnit Enables undo units to contain child undo units.
IOleUILinkContainer OLE common dialog boxes use this interface to manage the properties of a container's links.
IOleUILinkInfo An extension to the IOleUILinkContainer interface that enables containers to support the Link page of the Object Properties dialog box.
IOleUIObjInfo Provides information used by the General and View pages of the Object Properties dialog box , which display information about the object's size, location, type, and name. It also allows the object to be converted via the Convert dialog box.
IOleUndoManager Enables containers to implement multi-level undo and redo operations for actions that occur within contained controls.
IOleUndoUnit The undo manager calls the methods in this interface to perform undo actions and to get strings that can be displayed in the user interface to describe the undo action.
IOleWindow Enables an application to obtain the handle to the various windows that participate in in-place activation, and also to enter and exit context-sensitive help mode.
IViewObject Enables an object to display itself directly without passing a data object to the caller. In addition, this interface can create and manage a connection with an advise sink so the caller can be notified of changes in the view object.
IViewObject2 An extension to the IViewObject interface that returns the size of the drawing for a given view of an object.
IViewObjectEx An extension to the IViewObject2 interface that provides support for flicker-free drawing, hit testing, and control sizing.