# IViewObject2

The IViewObject2 interface is an extension to the IViewObject interface which returns the size of the drawing for a given view of an object. You can prevent the object from being run if it isn’t already running by calling this method instead of IOleObject::GetExtent.

Like the IViewObject interface, IViewObject2 cannot be marshaled to another process. This is because device contexts are only effective in the context of one process.

The OLE-provided default implementation provides the size of the object in the cache.

##### When to Implement

Object handlers and in-process servers that manage their own presentations implement IViewObject2 for use by compound document containers.

##### When to Use

A container application or object handler calls the GetExtent method in the IViewObject2 interface to get the object’s size from its cache.

Methods in Vtable Order

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

IViewObject Methods | Description
Draw | Draws a representation of the object onto a device context.
GetColorSet | Returns the logical palette the object uses for drawing.
Freeze | Freezes the drawn representation of an object so it will not change until a subsequent Unfreeze.
Unfreeze | Unfreezes the drawn representation of an object.
SetAdvise | Sets up a connection between the view object and an advise sink so that the advise sink can receive notifications of changes in the view object.
GetAdvise | Returns the information on the most recent SetAdvise.

IViewObject2 Method | Description
GetExtent | Returns the size of the view object from the cache.