Compound Document Interfaces
The following tables list the interfaces implemented by OLE containers, OLE servers, and compound document objects. The required interfaces must be implemented on the components for which they are listed. All other features are optional. If you want to include a particular feature in your application, however, you must implement the interfaces shown for that feature in the table below. All other interfaces are required only if you are including a particular feature.
The following table lists required and optional behaviors for OLE containers and which interfaces you must implement for each.
Behavior | Interfaces |
---|---|
Required behaviors |
IOleClientSite IAdviseSink |
Message filtering |
IMessageFilter |
Linking |
none |
Linking to embedded objects |
IOleItemContainer IPersistFile IClassFactory |
In-place activation |
IOleInPlaceSite IOleInPlaceFrame IOleInPlaceObject |
Drag and drop |
IDropSource IDropTarget IDataObject |
The following table lists required and optional behaviors for OLE servers and their compound document objects and which interfaces you must implement for each. The table distinguishes OLE servers and their objects in order to clarify which component implements which interfaces. The table also notes the different requirements of objects provided by out-of-process versus in-process servers.
Feature | OLE Server | Object (Out-of-process) | Object (In-process) |
---|---|---|---|
Required behaviors | IClassFactory |
IOleObject IDataObject IPersistStorage |
IOleObject IDataObject IPersistStorage IViewObject2 IOleCache2 |
Message filtering |
IMessageFilter |
||
Linking |
IOleItemContainer IPersistFile |
IOleLink IExternalConnection |
|
In-place activation |
IOleInPlaceObject IOleInPlaceActiveObject |
IOleInPlaceObject IOleInPlaceActiveObject |
|
Drag and drop |
IDropSource IDropTarget IDataObject |