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. For example, containers must implement the IOleClientSite and IAdviseSink interfaces. 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. For example, if you want your application to do message filtering (recommended), you must implement IMessageFilter.

The following table lists required and optional behaviors for OLE containers and which interfaces you must implement for each.

OLE Containers

Behavior

Interfaces

Required Behaviors

IOleClientSite

IAdviseSink

Message Filtering

IMessageFilter

Linking

none

Linking to Embedded Objects

IOleItemContainer

IPersistFile

IClassFactory

In-Place Activation

IOleInPlaceSite

IOleInPlaceActive-Frame

IOleInPlaceUIObject

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

Compound Document Object

Out-of-Process

In-Process

Required Behaviors

IClassFactory

IOleObject

IOleObject

IDataObject

IDataObject

IPersistStorage

IPersistStorage

IViewObject2

IOleCache2

Message
Filtering

IMessageFilter

Linking

IOleItemContainer

IOleLink

IPersistFile

IExternalConnection

In-Place-
Activation

IOleInPlaceObject

IOleInPlaceObject

IOleInPlace-
ActiveObject

IOleInPlaceActive-
Object

Drag and Drop

IDropSource

IDropTarget

IDataObject