IOleObjectImpl Class

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at IOleObjectImpl Class.

This class implements IUnknown and is the principal interface through which a container communicates with a control.

Important

This class and its members cannot be used in applications that execute in the Windows Runtime.

Syntax

template<class T>  
class ATL_NO_VTABLE IOleObjectImpl : public IOleObject

Parameters

T
Your class, derived from IOleObjectImpl.

Members

Public Methods

Name Description
IOleObjectImpl::Advise Establishes an advisory connection with the control.
IOleObjectImpl::Close Changes the control state from running to loaded.
IOleObjectImpl::DoVerb Tells the control to perform one of its enumerated actions.
IOleObjectImpl::DoVerbDiscardUndo Tells the control to discard any undo state it is maintaining.
IOleObjectImpl::DoVerbHide Tells the control to remove its user interface from view.
IOleObjectImpl::DoVerbInPlaceActivate Runs the control and installs its window, but does not install the control's user interface.
IOleObjectImpl::DoVerbOpen Causes the control to be open-edited in a separate window.
IOleObjectImpl::DoVerbPrimary Performs the specified action when the user double-clicks the control. The control defines the action, usually to activate the control in-place.
IOleObjectImpl::DoVerbShow Shows a newly inserted control to the user.
IOleObjectImpl::DoVerbUIActivate Activates the control in-place and shows the control's user interface, such as menus and toolbars.
IOleObjectImpl::EnumAdvise Enumerates the control's advisory connections.
IOleObjectImpl::EnumVerbs Enumerates actions for the control.
IOleObjectImpl::GetClientSite Retrieves the control's client site.
IOleObjectImpl::GetClipboardData Retrieves data from the Clipboard. The ATL implementation returns E_NOTIMPL.
IOleObjectImpl::GetExtent Retrieves the extent of the control's display area.
IOleObjectImpl::GetMiscStatus Retrieves the status of the control.
IOleObjectImpl::GetMoniker Retrieves the control's moniker. The ATL implementation returns E_NOTIMPL.
IOleObjectImpl::GetUserClassID Retrieves the control's class identifier.
IOleObjectImpl::GetUserType Retrieves the control's user-type name.
IOleObjectImpl::InitFromData Initializes the control from selected data. The ATL implementation returns E_NOTIMPL.
IOleObjectImpl::IsUpToDate Checks if the control is up to date. The ATL implementation returns S_OK.
IOleObjectImpl::OnPostVerbDiscardUndo Called by DoVerbDiscardUndo after the undo state is discarded.
IOleObjectImpl::OnPostVerbHide Called by DoVerbHide after the control is hidden.
IOleObjectImpl::OnPostVerbInPlaceActivate Called by DoVerbInPlaceActivate after the control is activated in place.
IOleObjectImpl::OnPostVerbOpen Called by DoVerbOpen after the control has been opened for editing in a separate window.
IOleObjectImpl::OnPostVerbShow Called by DoVerbShow after the control has been made visible.
IOleObjectImpl::OnPostVerbUIActivate Called by DoVerbUIActivate after the control's user interface has been activated.
IOleObjectImpl::OnPreVerbDiscardUndo Called by DoVerbDiscardUndo before the undo state is discarded.
IOleObjectImpl::OnPreVerbHide Called by DoVerbHide before the control is hidden.
IOleObjectImpl::OnPreVerbInPlaceActivate Called by DoVerbInPlaceActivate before the control is activated in place.
IOleObjectImpl::OnPreVerbOpen Called by DoVerbOpen before the control has been opened for editing in a separate window.
IOleObjectImpl::OnPreVerbShow Called by DoVerbShow before the control has been made visible.
IOleObjectImpl::OnPreVerbUIActivate Called by DoVerbUIActivate before the control's user interface has been activated.
IOleObjectImpl::SetClientSite Tells the control about its client site in the container.
IOleObjectImpl::SetColorScheme Recommends a color scheme to the control's application, if any. The ATL implementation returns E_NOTIMPL.
IOleObjectImpl::SetExtent Sets the extent of the control's display area.
IOleObjectImpl::SetHostNames Tells the control the names of the container application and container document.
IOleObjectImpl::SetMoniker Tells the control what its moniker is. The ATL implementation returns E_NOTIMPL.
IOleObjectImpl::Unadvise Deletes an advisory connection with the control.
IOleObjectImpl::Update Updates the control. The ATL implementation returns S_OK.

Remarks

The IOleObject interface is the principal interface through which a container communicates with a control. Class IOleObjectImpl provides a default implementation of this interface and implements IUnknown by sending information to the dump device in debug builds.

Related Articles ATL Tutorial, Creating an ATL Project

Inheritance Hierarchy

IOleObject

IOleObjectImpl

Requirements

Header: atlctl.h

IOleObjectImpl::Advise

Establishes an advisory connection with the control.

STDMETHOD(Advise)(
    IAdviseSink* pAdvSink,
    DWORD* pdwConnection);

Remarks

See IOleObject::Advise in the Windows SDK.

IOleObjectImpl::Close

Changes the control state from running to loaded.

STDMETHOD(Close)(DWORD dwSaveOption);

Remarks

Deactivates the control and destroys the control window if it exists. If the control class data member CComControlBase::m_bRequiresSave is TRUE and the dwSaveOption parameter is either OLECLOSE_SAVEIFDIRTY or OLECLOSE_PROMPTSAVE, the control properties are saved before closing.

The pointers held in the control class data members CComControlBase::m_spInPlaceSite and CComControlBase::m_spAdviseSink are released, and the data members CComControlBase::m_bNegotiatedWnd, CComControlBase::m_bWndless, and CComControlBase::m_bInPlaceSiteEx are set to FALSE.

See IOleObject::Close in the Windows SDK.

IOleObjectImpl::DoVerb

Tells the control to perform one of its enumerated actions.

STDMETHOD(DoVerb)(
    LONG iVerb,
    LPMSG /* pMsg */,
    IOleClientSite* pActiveSite,
    LONG /* lindex */,
    HWND hwndParent,
    LPCRECT lprcPosRect);

Remarks

Depending on the value of iVerb, one of the ATL DoVerb helper functions is called as follows:

iVerb Value DoVerb helper function called
OLEIVERB_DISCARDUNDOSTATE DoVerbDiscardUndo
OLEIVERB_HIDE DoVerbHide
OLEIVERB_INPLACEACTIVATE DoVerbInPlaceActivate
OLEIVERB_OPEN DoVerbOpen
OLEIVERB_PRIMARY DoVerbPrimary
OLEIVERB_PROPERTIES CComControlBase::DoVerbProperties
OLEIVERB_SHOW DoVerbShow
OLEIVERB_UIACTIVATE DoVerbUIActivate

See IOleObject::DoVerb in the Windows SDK.

IOleObjectImpl::DoVerbDiscardUndo

Tells the control to discard any undo state it is maintaining.

HRESULT DoVerbDiscardUndo(LPCRECT /* prcPosRect */, HWND /* hwndParent */);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control.

Return Value

Returns S_OK.

IOleObjectImpl::DoVerbHide

Deactivates and removes the control's user interface, and hides the control.

HRESULT DoVerbHide(LPCRECT /* prcPosRect */, HWND /* hwndParent */);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control. Not used in the ATL implementation.

Return Value

Returns S_OK.

IOleObjectImpl::DoVerbInPlaceActivate

Runs the control and installs its window, but does not install the control's user interface.

HRESULT DoVerbInPlaceActivate(LPCRECT prcPosRect, HWND /* hwndParent */);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control. Not used in the ATL implementation.

Return Value

One of the standard HRESULT values.

Remarks

Activates the control in place by calling CComControlBase::InPlaceActivate. Unless the control class's data member m_bWindowOnly is TRUE, DoVerbInPlaceActivate first attempts to activate the control as a windowless control (possible only if the container supports IOleInPlaceSiteWindowless). If that fails, the function attempts to activate the control with extended features (possible only if the container supports IOleInPlaceSiteEx). If that fails, the function attempts to activate the control with no extended features (possible only if the container supports IOleInPlaceSite). If activation succeeds, the function notifies the container the control has been activated.

IOleObjectImpl::DoVerbOpen

Causes the control to be open-edited in a separate window.

HRESULT DoVerbOpen(LPCRECT /* prcPosRect */, HWND /* hwndParent */);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control.

Return Value

Returns S_OK.

IOleObjectImpl::DoVerbPrimary

Defines the action taken when the user double-clicks the control.

HRESULT DoVerbPrimary(LPCRECT prcPosRect, HWND hwndParent);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control.

Return Value

One of the standard HRESULT values.

Remarks

By default, set to display the property pages. You can override this in your control class to invoke a different behavior on double-click; for example, play a video or go in-place active.

IOleObjectImpl::DoVerbShow

Tells the container to make the control visible.

HRESULT DoVerbShow(LPCRECT prcPosRect, HWND /* hwndParent */);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control. Not used in the ATL implementation.

Return Value

One of the standard HRESULT values.

IOleObjectImpl::DoVerbUIActivate

Activates the control's user interface and notifies the container that its menus are being replaced by composite menus.

HRESULT DoVerbUIActivate(LPCRECT prcPosRect, HWND /* hwndParent */);

Parameters

prcPosRec
[in] Pointer to the rectangle the container wants the control to draw into.

hwndParent
[in] Handle of the window containing the control. Not used in the ATL implementation.

Return Value

One of the standard HRESULT values.

IOleObjectImpl::EnumAdvise

Supplies an enumeration of registered advisory connections for this control.

STDMETHOD(EnumAdvise)(IEnumSTATDATA** ppenumAdvise);

Remarks

See IOleObject::EnumAdvise in the Windows SDK.

IOleObjectImpl::EnumVerbs

Supplies an enumeration of registered actions (verbs) for this control by calling OleRegEnumVerbs.

STDMETHOD(EnumVerbs)(IEnumOLEVERB** ppEnumOleVerb);

Remarks

You can add verbs to your project's .rgs file. For example, see CIRCCTL.RGS in the CIRC sample.

See IOleObject::EnumVerbs in the Windows SDK.

IOleObjectImpl::GetClientSite

Puts the pointer in the control class data member CComControlBase::m_spClientSite into ppClientSite and increments the reference count on the pointer.

STDMETHOD(GetClientSite)(IOleClientSite** ppClientSite);

Remarks

See IOleObject::GetClientSite in the Windows SDK.

IOleObjectImpl::GetClipboardData

Retrieves data from the Clipboard.

STDMETHOD(GetClipboardData)(    
    DWORD /* dwReserved */,
    IDataObject** /* ppDataObject */);

Return Value

Returns E_NOTIMPL.

Remarks

See IOleObject::GetClipboardData in the Windows SDK.

IOleObjectImpl::GetExtent

Retrieves a running control's display size in HIMETRIC units (0.01 millimeter per unit).

STDMETHOD(GetExtent)(
    DWORD dwDrawAspect,
    SIZEL* psizel);

Remarks

The size is stored in the control class data member CComControlBase::m_sizeExtent.

See IOleObject::GetExtent in the Windows SDK.

IOleObjectImpl::GetMiscStatus

Returns a pointer to registered status information for the control by calling OleRegGetMiscStatus.

STDMETHOD(GetMiscStatus)(
    DWORD dwAspect,
    DWORD* pdwStatus);

Remarks

The status information includes behaviors supported by the control and presentation data. You can add status information to your project's .rgs file.

See IOleObject::GetMiscStatus in the Windows SDK.

IOleObjectImpl::GetMoniker

Retrieves the control's moniker.

STDMETHOD(GetMoniker)(
    DWORD /* dwAssign */,
    DWORD /* dwWhichMoniker */,
    IMoniker** /* ppmk */);

Return Value

Returns E_NOTIMPL.

Remarks

See IOleObject::GetMoniker in the Windows SDK.

IOleObjectImpl::GetUserClassID

Returns the control's class identifier.

STDMETHOD(GetUserClassID)(CLSID* pClsid);

Remarks

See IOleObject::GetUserClassID in the Windows SDK.

IOleObjectImpl::GetUserType

Returns the control's user-type name by calling OleRegGetUserType.

STDMETHOD(GetUserType)(
    DWORD dwFormOfType,
    LPOLESTR* pszUserType);

Remarks

The user-type name is used for display in user-interfaces elements such as menus and dialog boxes. You can change the user-type name in your project's .rgs file.

See IOleObject::GetUserType in the Windows SDK.

IOleObjectImpl::InitFromData

Initializes the control from selected data.

STDMETHOD(InitFromData)(
    IDataObject* /* pDataObject */,
    BOOL /* fCreation */,
    DWORD /* dwReserved */);

Return Value

Returns E_NOTIMPL.

Remarks

See IOleObject::InitFromData in the Windows SDK.

IOleObjectImpl::IsUpToDate

Checks if the control is up to date.

STDMETHOD(IsUpToDate)(void);

Return Value

Returns S_OK.

Remarks

See IOleObject::IsUpToDate in the Windows SDK.

IOleObjectImpl::OnPostVerbDiscardUndo

Called by DoVerbDiscardUndo after the undo state is discarded.

HRESULT OnPostVerbDiscardUndo();

Return Value

Returns S_OK.

Remarks

Override this method with code you want executed after the undo state is discarded.

IOleObjectImpl::OnPostVerbHide

Called by DoVerbHide after the control is hidden.

HRESULT OnPostVerbHide();

Return Value

Returns S_OK.

Remarks

Override this method with code you want executed after the control is hidden.

IOleObjectImpl::OnPostVerbInPlaceActivate

Called by DoVerbInPlaceActivate after the control is activated in place.

HRESULT OnPostVerbInPlaceActivate();

Return Value

Returns S_OK.

Remarks

Override this method with code you want executed after the control is activated in place.

IOleObjectImpl::OnPostVerbOpen

Called by DoVerbOpen after the control has been opened for editing in a separate window.

HRESULT OnPostVerbOpen();

Return Value

Returns S_OK.

Remarks

Override this method with code you want executed after the control has been opened for editing in a separate window.

IOleObjectImpl::OnPostVerbShow

Called by DoVerbShow after the control has been made visible.

HRESULT OnPostVerbShow();

Return Value

Returns S_OK.

Remarks

Override this method with code you want executed after the control has been made visible.

IOleObjectImpl::OnPostVerbUIActivate

Called by DoVerbUIActivate after the control's user interface has been activated.

HRESULT OnPostVerbUIActivate();

Return Value

Returns S_OK.

Remarks

Override this method with code you want executed after the control's user interface has been activated.

IOleObjectImpl::OnPreVerbDiscardUndo

Called by DoVerbDiscardUndo before the undo state is discarded.

HRESULT OnPreVerbDiscardUndo();

Return Value

Returns S_OK.

Remarks

To prevent the undo state from being discarded, override this method to return an error HRESULT.

IOleObjectImpl::OnPreVerbHide

Called by DoVerbHide before the control is hidden.

HRESULT OnPreVerbHide();

Return Value

Returns S_OK.

Remarks

To prevent the control from being hidden, override this method to return an error HRESULT.

IOleObjectImpl::OnPreVerbInPlaceActivate

Called by DoVerbInPlaceActivate before the control is activated in place.

HRESULT OnPreVerbInPlaceActivate();

Return Value

Returns S_OK.

Remarks

To prevent the control from being activated in place, override this method to return an error HRESULT.

IOleObjectImpl::OnPreVerbOpen

Called by DoVerbOpen before the control has been opened for editing in a separate window.

HRESULT OnPreVerbOpen();

Return Value

Returns S_OK.

Remarks

To prevent the control from being opened for editing in a separate window, override this method to return an error HRESULT.

IOleObjectImpl::OnPreVerbShow

Called by DoVerbShow before the control has been made visible.

HRESULT OnPreVerbShow();

Return Value

Returns S_OK.

Remarks

To prevent the control from being made visible, override this method to return an error HRESULT.

IOleObjectImpl::OnPreVerbUIActivate

Called by DoVerbUIActivate before the control's user interface has been activated.

HRESULT OnPreVerbUIActivate();

Return Value

Returns S_OK.

Remarks

To prevent the control's user interface from being activated, override this method to return an error HRESULT.

IOleObjectImpl::SetClientSite

Tells the control about its client site in the container.

STDMETHOD(SetClientSite)(IOleClientSite* pClientSite);

Remarks

The method then returns S_OK.

See IOleObject::SetClientSite in the Windows SDK.

IOleObjectImpl::SetColorScheme

Recommends a color scheme to the control's application, if any.

STDMETHOD(SetColorScheme)(LOGPALETTE* /* pLogPal */);

Return Value

Returns E_NOTIMPL.

Remarks

See IOleObject::SetColorScheme in the Windows SDK.

IOleObjectImpl::SetExtent

Sets the extent of the control's display area.

STDMETHOD(SetExtent)(
    DWORD dwDrawAspect,
    SIZEL* psizel);

Remarks

Otherwise, SetExtent stores the value pointed to by psizel in the control class data member CComControlBase::m_sizeExtent. This value is in HIMETRIC units (0.01 millimeter per unit).

If the control class data member CComControlBase::m_bResizeNatural is TRUE, SetExtent also stores the value pointed to by psizel in the control class data member CComControlBase::m_sizeNatural.

If the control class data member CComControlBase::m_bRecomposeOnResize is TRUE, SetExtent calls SendOnDataChange and SendOnViewChange to notify all advisory sinks registered with the advise holder that the control size has changed.

See IOleObject::SetExtent in the Windows SDK.

IOleObjectImpl::SetHostNames

Tells the control the names of the container application and container document.

STDMETHOD(SetHostNames)(LPCOLESTR /* szContainerApp */, LPCOLESTR /* szContainerObj */);

Return Value

Returns S_OK.

Remarks

See IOleObject::SetHostNames in the Windows SDK.

IOleObjectImpl::SetMoniker

Tells the control what its moniker is.

STDMETHOD(SetMoniker)(
    DWORD /* dwWhichMoniker */,
    IMoniker** /* pmk */);

Return Value

Returns E_NOTIMPL.

Remarks

See IOleObject::SetMoniker in the Windows SDK.

IOleObjectImpl::Unadvise

Deletes the advisory connection stored in the control class's m_spOleAdviseHolder data member.

STDMETHOD(Unadvise)(DWORD dwConnection);

Remarks

See IOleObject::Unadvise in the Windows SDK.

IOleObjectImpl::Update

Updates the control.

STDMETHOD(Update)(void);

Return Value

Returns S_OK.

Remarks

See IOleObject::Update in the Windows SDK.

See Also

CComControl Class
ActiveX Controls Interfaces
Class Overview