# IOleObject

The IOleObject interface is the principal means by which an embedded object provides basic functionality to, and communicates with, its container.

##### When to Implement

An object application must implement this interface, along with at least IDataObject and IPersistStorage, for each type of embedded object that it supports. Although this interface contains 21 methods, only three are nontrivial to implement and must be fully implemented: DoVerb, SetHostNames, and Close. Six of the methods provide optional functionality, which, if not desired, can be implemented to return E_NOTIMPL: SetExtent, InitFromData, GetClipboardData, SetColorScheme, SetMoniker, and GetMoniker. The latter two methods are useful mainly for enabling links to embedded objects.

##### When to Use

Call the methods of this interface to enable a container to communicate with an embedded object. A container must call DoVerb to activate an embedded object, SetHostNames to communicate the names of the container application and container document, and Close to move an object from a running to a loaded state. Calls to all other methods are optional.

Methods in VTable Order

IUnknown Methods | Description
QueryInterface | Returns pointers to supported interfaces.
AddRef | Increments reference count.
Release | Decrements reference count.

IOleObject Methods | Description
SetClientSite | Informs object of its client site in container.
GetClientSite | Retrieves object’s client site.
SetHostNames | Communicates names of container application and container document.
Close | Moves object from running to loaded state.
SetMoniker | Informs object of its moniker.
GetMoniker | Retrieves object’s moniker.
InitFromData | Initializes embedded object from selected data.
GetClipboardData | Retrieves a data transfer object from the Clipboard.
DoVerb | Invokes object to perform one of its enumerated actions (“verbs”).
EnumVerbs | Enumerates actions (“verbs”) for an object.
Update | Updates an object.
IsUpToDate | Checks if object is up to date.
GetUserClassID | Returns an object’s class identifier.
GetUserType | Retrieves object’s user-type name.
SetExtent | Sets extent of object’s display area.
GetExtent | Retrieves extent of object’s display area.
Advise | Establishes advisory connection with object.
Unadvise | Destroys advisory connection with object.
EnumAdvise | Enumerates object’s advisory connections.
GetMiscStatus | Retrieves status of object.
SetColorScheme | Recommends color scheme to object application.