Editare

Partajați prin


COleClientItem Class

Defines the container interface to OLE items.

Syntax

class COleClientItem : public CDocItem

Members

Public Constructors

Name Description
COleClientItem::COleClientItem Constructs a COleClientItem object.

Public Methods

Name Description
COleClientItem::Activate Opens the OLE item for an operation and then executes the specified verb.
COleClientItem::ActivateAs Activates the item as another type.
COleClientItem::AttachDataObject Accesses the data in the OLE object.
COleClientItem::CanCreateFromData Indicates whether a container application can create an embedded object.
COleClientItem::CanCreateLinkFromData Indicates whether a container application can create a linked object.
COleClientItem::CanPaste Indicates whether the Clipboard contains an embeddable or static OLE item.
COleClientItem::CanPasteLink Indicates whether the Clipboard contains a linkable OLE item.
COleClientItem::Close Closes a link to a server but does not destroy the OLE item.
COleClientItem::ConvertTo Converts the item to another type.
COleClientItem::CopyToClipboard Copies the OLE item to the Clipboard.
COleClientItem::CreateCloneFrom Creates a duplicate of an existing item.
COleClientItem::CreateFromClipboard Creates an embedded item from the Clipboard.
COleClientItem::CreateFromData Creates an embedded item from a data object.
COleClientItem::CreateFromFile Creates an embedded item from a file.
COleClientItem::CreateLinkFromClipboard Creates a linked item from the Clipboard.
COleClientItem::CreateLinkFromData Creates a linked item from a data object.
COleClientItem::CreateLinkFromFile Creates a linked item from a file.
COleClientItem::CreateNewItem Creates a new embedded item by launching the server application.
COleClientItem::CreateStaticFromClipboard Creates a static item from the Clipboard.
COleClientItem::CreateStaticFromData Creates a static item from a data object.
COleClientItem::Deactivate Deactivates the item.
COleClientItem::DeactivateUI Restores the container application's user interface to its original state.
COleClientItem::Delete Deletes or closes the OLE item if it was a linked item.
COleClientItem::DoDragDrop Performs a drag-and-drop operation.
COleClientItem::DoVerb Executes the specified verb.
COleClientItem::Draw Draws the OLE item.
COleClientItem::GetActiveView Gets the view on which the item is activated in place.
COleClientItem::GetCachedExtent Returns the bounds of the OLE item's rectangle.
COleClientItem::GetClassID Gets the present item's class ID.
COleClientItem::GetClipboardData Gets the data that would be placed on the Clipboard by calling the CopyToClipboard member function.
COleClientItem::GetDocument Returns the COleDocument object that contains the present item.
COleClientItem::GetDrawAspect Gets the item's current view for rendering.
COleClientItem::GetExtent Returns the bounds of the OLE item's rectangle.
COleClientItem::GetIconFromRegistry Retrieves a handle to an icon associated with the server of a particular CLSID.
COleClientItem::GetIconicMetafile Gets the metafile used for drawing the item's icon.
COleClientItem::GetInPlaceWindow Returns a pointer to the item's in-place editing window.
COleClientItem::GetItemState Gets the item's current state.
COleClientItem::GetLastStatus Returns the status of the last OLE operation.
COleClientItem::GetLinkUpdateOptions Returns the update mode for a linked item (advanced feature).
COleClientItem::GetType Returns the type (embedded, linked, or static) of the OLE item.
COleClientItem::GetUserType Gets a string describing the item's type.
COleClientItem::IsInPlaceActive Returns TRUE if the item is in-place active.
COleClientItem::IsLinkUpToDate Returns TRUE if a linked item is up to date with its source document.
COleClientItem::IsModified Returns TRUE if the item has been modified since it was last saved.
COleClientItem::IsOpen Returns TRUE if the item is currently open in the server application.
COleClientItem::IsRunning Returns TRUE if the item's server application is running.
COleClientItem::OnActivate Called by the framework to notify the item that it is activated.
COleClientItem::OnActivateUI Called by the framework to notify the item that it is activated and should show its user interface.
COleClientItem::OnChange Called when the server changes the OLE item. Implementation required.
COleClientItem::OnDeactivate Called by the framework when an item is deactivated.
COleClientItem::OnDeactivateUI Called by the framework when the server has removed its in-place user interface.
COleClientItem::OnGetClipboardData Called by the framework to get the data to be copied to the Clipboard.
COleClientItem::OnInsertMenus Called by the framework to create a composite menu.
COleClientItem::OnRemoveMenus Called by the framework to remove the container's menus from a composite menu.
COleClientItem::OnSetMenu Called by the framework to install and remove a composite menu.
COleClientItem::OnShowControlBars Called by the framework to show and hide control bars.
COleClientItem::OnUpdateFrameTitle Called by the framework to update the frame window's title bar.
COleClientItem::ReactivateAndUndo Reactivates the item and undoes the last in-place editing operation.
COleClientItem::Release Releases the connection to an OLE linked item and closes it if it was open. Does not destroy the client item.
COleClientItem::Reload Reloads the item after a call to ActivateAs.
COleClientItem::Run Runs the application associated with the item.
COleClientItem::SetDrawAspect Sets the item's current view for rendering.
COleClientItem::SetExtent Sets the bounding rectangle of the OLE item.
COleClientItem::SetHostNames Sets the names the server displays when editing the OLE item.
COleClientItem::SetIconicMetafile Caches the metafile used for drawing the item's icon.
COleClientItem::SetItemRects Sets the item's bounding rectangle.
COleClientItem::SetLinkUpdateOptions Sets the update mode for a linked item (advanced feature).
COleClientItem::SetPrintDevice Sets the print-target device for this client item.
COleClientItem::UpdateLink Updates the presentation cache of an item.

Protected Methods

Name Description
COleClientItem::CanActivate Called by the framework to determine whether in-place activation is allowed.
COleClientItem::OnChangeItemPosition Called by the framework when an item's position changes.
COleClientItem::OnDeactivateAndUndo Called by the framework to undo after activation.
COleClientItem::OnDiscardUndoState Called by the framework to discard the item's undo state information.
COleClientItem::OnGetClipRect Called by the framework to get the item's clipping-rectangle coordinates.
COleClientItem::OnGetItemPosition Called by the framework to get the item's position relative to the view.
COleClientItem::OnGetWindowContext Called by the framework when an item is activated in place.
COleClientItem::OnScrollBy Called by the framework to scroll the item into view.
COleClientItem::OnShowItem Called by the framework to display the OLE item.

Remarks

An OLE item represents data, created and maintained by a server application, which can be "seamlessly" incorporated into a document so that it appears to the user to be a single document. The result is a "compound document" made up of the OLE item and a containing document.

An OLE item can be either embedded or linked. If it is embedded, its data is stored as part of the compound document. If it is linked, its data is stored as part of a separate file created by the server application, and only a link to that file is stored in the compound document. All OLE items contain information specifying the server application that should be called to edit them.

COleClientItem defines several overridable functions that are called in response to requests from the server application; these overridables usually act as notifications. This allows the server application to inform the container of changes the user makes when editing the OLE item, or to retrieve information needed during editing.

COleClientItem can be used with either the COleDocument, COleLinkingDoc, or COleServerDoc class. To use COleClientItem, derive a class from it and implement the OnChange member function, which defines how the container responds to changes made to the item. To support in-place activation, override the OnGetItemPosition member function. This function provides information about the displayed position of the OLE item.

For more information about using the container interface, see the articles Containers: Implementing a Container and Activation.

Note

The Windows SDK refers to embedded and linked items as "objects" and refers to types of items as "classes." This reference uses the term "item" to distinguish the OLE entity from the corresponding C++ object and the term "type" to distinguish the OLE category from the C++ class.

Inheritance Hierarchy

CObject

CCmdTarget

CDocItem

COleClientItem

Requirements

Header: afxole.h

COleClientItem::Activate

Call this function to execute the specified verb instead of DoVerb so that you can do your own processing when an exception is thrown.

void Activate(
    LONG nVerb,
    CView* pView,
    LPMSG lpMsg = NULL);

Parameters

nVerb
Specifies the verb to execute. It can be one of the following:

Value Meaning Symbol
- 0 Primary verb OLEIVERB_PRIMARY
- 1 Secondary verb (None)
- 1 Display item for editing OLEIVERB_SHOW
- 2 Edit item in separate window OLEIVERB_OPEN
- 3 Hide item OLEIVERB_HIDE

The -1 value is typically an alias for another verb. If open editing is not supported, -2 has the same effect as -1. For additional values, see IOleObject::DoVerb in the Windows SDK.

pView
Pointer to the container view window that contains the OLE item; this is used by the server application for in-place activation. This parameter should be NULL if the container does not support in-place activation.

lpMsg
Pointer to the message that caused the item to be activated.

Remarks

If the server application was written using the Microsoft Foundation Class Library, this function causes the OnDoVerb member function of the corresponding COleServerItem object to be executed.

If the primary verb is Edit and zero is specified in the nVerb parameter, the server application is launched to allow the OLE item to be edited. If the container application supports in-place activation, editing can be done in place. If the container does not support in-place activation (or if the Open verb is specified), the server is launched in a separate window and editing can be done there. Typically, when the user of the container application double-clicks the OLE item, the value for the primary verb in the nVerb parameter determines which action the user can take. However, if the server supports only one action, it takes that action, no matter which value is specified in the nVerb parameter.

For more information, see IOleObject::DoVerb in the Windows SDK.

COleClientItem::ActivateAs

Uses OLE's object conversion facilities to activate the item as though it were an item of the type specified by clsidNew.

virtual BOOL ActivateAs(
    LPCTSTR lpszUserType,
    REFCLSID clsidOld,
    REFCLSID clsidNew);

Parameters

lpszUserType
Pointer to a string representing the target user type, such as "Word Document."

clsidOld
A reference to the item's current class ID. The class ID should represent the type of the actual object, as stored, unless it is a link. In that case, it should be the CLSID of the item to which the link refers. The COleConvertDialog automatically provides the correct class ID for the item.

clsidNew
A reference to the target class ID.

Return Value

Nonzero if successful; otherwise 0.

Remarks

This is called automatically by COleConvertDialog::DoConvert. It is not usually called directly.

COleClientItem::AttachDataObject

Call this function to initialize a COleDataObject for accessing the data in the OLE item.

void AttachDataObject(COleDataObject& rDataObject) const;

Parameters

rDataObject
Reference to a COleDataObject object that will be initialized to allow access to the data in the OLE item.

COleClientItem::CanActivate

Called by the framework when the user requests in-place activation of the OLE item; this function's return value determines whether in-place activation is allowed.

virtual BOOL CanActivate();

Return Value

Nonzero if in-place activation is allowed; otherwise 0.

Remarks

The default implementation allows in-place activation if the container has a valid window. Override this function to implement special logic for accepting or refusing the activation request. For example, an activation request can be refused if the OLE item is too small or not currently visible.

For more information, see IOleInPlaceSite::CanInPlaceActivate in the Windows SDK.

COleClientItem::CanCreateFromData

Checks whether a container application can create an embedded object from the given COleDataObject object.

static BOOL PASCAL CanCreateFromData(const COleDataObject* pDataObject);

Parameters

pDataObject
Pointer to the COleDataObject object from which the OLE item is to be created.

Return Value

Nonzero if the container can create an embedded object from the COleDataObject object; otherwise 0.

Remarks

The COleDataObject class is used in data transfers for retrieving data in various formats from the Clipboard, through drag and drop, or from an embedded OLE item.

Containers can use this function to decide to enable or disable their Edit Paste and Edit Paste Special commands.

For more information, see the article Data Objects and Data Sources (OLE).

COleClientItem::CanCreateLinkFromData

Checks whether a container application can create a linked object from the given COleDataObject object.

static BOOL PASCAL CanCreateLinkFromData(const COleDataObject* pDataObject);

Parameters

pDataObject
Pointer to the COleDataObject object from which the OLE item is to be created.

Return Value

Nonzero if the container can create a linked object from the COleDataObject object.

Remarks

The COleDataObject class is used in data transfers for retrieving data in various formats from the Clipboard, through drag and drop, or from an embedded OLE item.

Containers can use this function to decide to enable or disable their Edit Paste Special and Edit Paste Link commands.

For more information, see the article Data Objects and Data Sources (OLE).

COleClientItem::CanPaste

Call this function to see whether an embedded OLE item can be pasted from the Clipboard.

static BOOL PASCAL CanPaste();

Return Value

Nonzero if an embedded OLE item can be pasted from the Clipboard; otherwise 0.

Remarks

For more information, see OleGetClipboard and OleQueryCreateFromData in the Windows SDK.

Call this function to see whether a linked OLE item can be pasted from the Clipboard.

static BOOL PASCAL CanPasteLink();

Return Value

Nonzero if a linked OLE item can be pasted from the Clipboard; otherwise 0.

Remarks

For more information, see OleGetClipboard and OleQueryLinkFromData in the Windows SDK.

COleClientItem::Close

Call this function to change the state of an OLE item from the running state to the loaded state, that is, loaded with its handler in memory but with the server not running.

void Close(OLECLOSE dwCloseOption = OLECLOSE_SAVEIFDIRTY);

Parameters

dwCloseOption
Flag specifying under what circumstances the OLE item is saved when it returns to the loaded state. It can have one of the following values:

  • OLECLOSE_SAVEIFDIRTY Save the OLE item.

  • OLECLOSE_NOSAVE Do not save the OLE item.

  • OLECLOSE_PROMPTSAVE Prompt the user on whether to save the OLE item.

Remarks

This function has no effect when the OLE item is not running.

For more information, see IOleObject::Close in the Windows SDK.

COleClientItem::COleClientItem

Constructs a COleClientItem object and adds it to the container document's collection of document items, which constructs only the C++ object and does not perform any OLE initialization.

COleClientItem(COleDocument* pContainerDoc = NULL);

Parameters

pContainerDoc
Pointer to the container document that will contain this item. This can be any COleDocument derivative.

Remarks

If you pass a NULL pointer, no addition is made to the container document. You must explicitly call COleDocument::AddItem.

You must call one of the following creation member functions before you use the OLE item:

COleClientItem::ConvertTo

Call this member function to convert the item to the type specified by clsidNew.

virtual BOOL ConvertTo(REFCLSID clsidNew);

Parameters

clsidNew
The class ID of the target type.

Return Value

Nonzero if successful; otherwise 0.

Remarks

This is called automatically by COleConvertDialog. It is not necessary to call it directly.

COleClientItem::CopyToClipboard

Call this function to copy the OLE item to the Clipboard.

void CopyToClipboard(BOOL bIncludeLink = FALSE);

Parameters

bIncludeLink
TRUE if link information should be copied to the Clipboard, allowing a linked item to be pasted; otherwise FALSE.

Remarks

Typically, you call this function when writing message handlers for the Copy or Cut commands from the Edit menu. You must implement item selection in your container application if you want to implement the Copy or Cut commands.

For more information, see OleSetClipboard in the Windows SDK.

COleClientItem::CreateCloneFrom

Call this function to create a copy of the specified OLE item.

BOOL CreateCloneFrom(const COleClientItem* pSrcItem);

Parameters

pSrcItem
Pointer to the OLE item to be duplicated.

Return Value

Nonzero if successful; otherwise 0.

Remarks

The copy is identical to the source item. You can use this function to support undo operations.

COleClientItem::CreateFromClipboard

Call this function to create an embedded item from the contents of the Clipboard.

BOOL CreateFromClipboard(
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

You typically call this function from the message handler for the Paste command on the Edit menu. (The Paste command is enabled by the framework if the CanPaste member function returns nonzero.)

For more information, see OLERENDER and FORMATETC in the Windows SDK.

COleClientItem::CreateFromData

Call this function to create an embedded item from a COleDataObject object.

BOOL CreateFromData(
    COleDataObject* pDataObject,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

pDataObject
Pointer to the COleDataObject object from which the OLE item is to be created.

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

Data transfer operations, such as pasting from the Clipboard or drag-and-drop operations, provide COleDataObject objects containing the information offered by a server application. It is usually used in your override of CView::OnDrop.

For more information, see OleCreateFromData, OLERENDER, and FORMATETC in the Windows SDK.

COleClientItem::CreateFromFile

Call this function to create an embedded OLE item from a file.

BOOL CreateFromFile(
    LPCTSTR lpszFileName,
    REFCLSID clsid = CLSID_NULL,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

lpszFileName
Pointer to the name of the file from which the OLE item is to be created.

clsid
Reserved for future use.

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

The framework calls this function from COleInsertDialog::CreateItem if the user chooses OK from the Insert Object dialog box when the Create from File button is selected.

For more information, see OleCreateFromFile, OLERENDER, and FORMATETC in the Windows SDK.

COleClientItem::CreateLinkFromClipboard

Call this function to create a linked item from the contents of the Clipboard.

BOOL CreateLinkFromClipboard(
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

You typically call this function from the message handler for the Paste Link command on the Edit menu. (The Paste Link command is enabled in the default implementation of COleDocument if the Clipboard contains an OLE item that can be linked to.)

For more information, see OLERENDER and FORMATETC in the Windows SDK.

COleClientItem::CreateLinkFromData

Call this function to create a linked item from a COleDataObject object.

BOOL CreateLinkFromData(
    COleDataObject* pDataObject,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

pDataObject
Pointer to the COleDataObject object from which the OLE item is to be created.

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

Call this during a drop operation when the user indicates a link should be created. It can also be used to handle the Edit Paste command. It is called by the framework in COleClientItem::CreateLinkFromClipboard and in COlePasteSpecialDialog::CreateItem when the Link option has been selected.

For more information, see OleCreateLinkFromData, OLERENDER, and FORMATETC in the Windows SDK.

COleClientItem::CreateLinkFromFile

Call this function to create a linked OLE item from a file.

BOOL CreateLinkFromFile(
    LPCTSTR lpszFileName,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

lpszFileName
Pointer to the name of the file from which the OLE item is to be created.

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

The framework calls this function if the user chooses OK from the Insert Object dialog box when the Create from File button is selected and the Link check box is checked. It is called from COleInsertDialog::CreateItem.

For more information, see OleCreateLinkToFile, OLERENDER, and FORMATETC in the Windows SDK.

COleClientItem::CreateNewItem

Call this function to create an embedded item; this function launches the server application that allows the user to create the OLE item.

BOOL CreateNewItem(
    REFCLSID clsid,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

clsid
ID that uniquely identifies the type of OLE item to create.

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

The framework calls this function if the user chooses OK from the Insert Object dialog box when the Create New button is selected.

For more information, see OleCreate, OLERENDER, and FORMATETC in the Windows SDK.

COleClientItem::CreateStaticFromClipboard

Call this function to create a static item from the contents of the Clipboard.

BOOL CreateStaticFromClipboard(
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

A static item contains the presentation data but not the native data; consequently it cannot be edited. You typically call this function if the CreateFromClipboard member function fails.

For more information, see OLERENDER and FORMATETC in the Windows SDK.

COleClientItem::CreateStaticFromData

Call this function to create a static item from a COleDataObject object.

BOOL CreateStaticFromData(
    COleDataObject* pDataObject,
    OLERENDER render = OLERENDER_DRAW,
    CLIPFORMAT cfFormat = 0,
    LPFORMATETC lpFormatEtc = NULL);

Parameters

pDataObject
Pointer to the COleDataObject object from which the OLE item is to be created.

render
Flag specifying how the server will render the OLE item. For the possible values, see OLERENDER in the Windows SDK.

cfFormat
Specifies the Clipboard data format to be cached when creating the OLE item.

lpFormatEtc
Pointer to a FORMATETC structure used if render is OLERENDER_FORMAT or OLERENDER_DRAW. Provide a value for this parameter only if you want to specify additional format information beyond the Clipboard format specified by cfFormat. If you omit this parameter, default values are used for the other fields in the FORMATETC structure.

Return Value

Nonzero if successful; otherwise 0.

Remarks

A static item contains the presentation data but not the native data; consequently, it cannot be edited. This is essentially the same as CreateStaticFromClipboard except that a static item can be created from an arbitrary COleDataObject, not just from the Clipboard.

Used in COlePasteSpecialDialog::CreateItem when Static is selected.

For more information, see OleCreateStaticFromData, OLERENDER, and FORMATETC in the Windows SDK.

COleClientItem::Deactivate

Call this function to deactivate the OLE item and free any associated resources.

void Deactivate();

Remarks

You typically deactivate an in-place active OLE item when the user clicks the mouse on the client area outside the bounds of the item. Note that deactivating the OLE item will discard its undo state, making it impossible to call the ReactivateAndUndo member function.

If your application supports undo, do not call Deactivate; instead, call DeactivateUI.

For more information, see IOleInPlaceObject::InPlaceDeactivate in the Windows SDK.

COleClientItem::DeactivateUI

Call this function when the user deactivates an item that was activated in place.

void DeactivateUI();

Remarks

This function restores the container application's user interface to its original state, hiding any menus and other controls that were created for in-place activation.

This function does not flush the undo state information for the item. That information is retained so that ReactivateAndUndo can later be used to execute an undo command in the server application, in case the container's undo command is chosen immediately after deactivating the item.

For more information, see IOleInPlaceObject::InPlaceDeactivate in the Windows SDK.

COleClientItem::Delete

Call this function to delete the OLE item from the container document.

void Delete(BOOL bAutoDelete = TRUE);

Parameters

bAutoDelete
Specifies whether the item is to be removed from the document.

Remarks

This function calls the Release member function, which in turn deletes the C++ object for the item, permanently removing the OLE item from the document. If the OLE item is embedded, the native data for the item is deleted. It always closes a running server; therefore, if the item is an open link, this function closes it.

COleClientItem::DoDragDrop

Call the DoDragDrop member function to perform a drag-and-drop operation.

DROPEFFECT DoDragDrop(
    LPCRECT lpItemRect,
    CPoint ptOffset,
    BOOL bIncludeLink = FALSE,
    DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
    LPCRECT lpRectStartDrag = NULL);

Parameters

lpItemRect
The item's rectangle on screen in client coordinates (pixels).

ptOffset
The offset from lpItemRect where the mouse position was at the time of the drag.

bIncludeLink
Set this to TRUE if the link data should be copied to the Clipboard. Set it to FALSE if your server application does not support links.

dwEffects
Determines the effects that the drag source will allow in the drag operation.

lpRectStartDrag
Pointer to the rectangle that defines where the drag actually starts. For more information, see the following Remarks section.

Return Value

A DROPEFFECT value. If it is DROPEFFECT_MOVE, the original data should be removed.

Remarks

The drag-and-drop operation does not start immediately. It waits until the mouse cursor leaves the rectangle specified by lpRectStartDrag or until a specified number of milliseconds have passed. If lpRectStartDrag is NULL, the size of the rectangle is one pixel.

The delay time is specified by a registry key setting. You can change the delay time by calling CWinApp::WriteProfileString or CWinApp::WriteProfileInt. If you do not specify the delay time, a default value of 200 milliseconds is used. Drag delay time is stored as follows:

  • Windows NT Drag delay time is stored in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • Windows 3.x Drag delay time is stored in the WIN.INI file, under the [Windows} section.

  • Windows 95/98 Drag delay time is stored in a cached version of WIN.INI.

For more information about how drag delay information is stored in either the registry or the .INI file, see WriteProfileString in the Windows SDK.

COleClientItem::DoVerb

Call DoVerb to execute the specified verb.

virtual BOOL DoVerb(
    LONG nVerb,
    CView* pView,
    LPMSG lpMsg = NULL);

Parameters

nVerb
Specifies the verb to execute. It can include one of the following:

Value Meaning Symbol
- 0 Primary verb OLEIVERB_PRIMARY
- 1 Secondary verb (None)
- 1 Display item for editing OLEIVERB_SHOW
- 2 Edit item in separate window OLEIVERB_OPEN
- 3 Hide item OLEIVERB_HIDE

The -1 value is typically an alias for another verb. If open editing is not supported, -2 has the same effect as -1. For additional values, see IOleObject::DoVerb in the Windows SDK.

pView
Pointer to the view window; this is used by the server for in-place activation. This parameter should be NULL if the container application does not allow in-place activation.

lpMsg
Pointer to the message that caused the item to be activated.

Return Value

Nonzero if the verb was successfully executed; otherwise 0.

Remarks

This function calls the Activate member function to execute the verb. It also catches exceptions and displays a message box to the user if one is thrown.

If the primary verb is Edit and zero is specified in the nVerb parameter, the server application is launched to allow the OLE item to be edited. If the container application supports in-place activation, editing can be done in place. If the container does not support in-place activation (or if the Open verb is specified), the server is launched in a separate window and editing can be done there. Typically, when the user of the container application double-clicks the OLE item, the value for the primary verb in the nVerb parameter determines which action the user can take. However, if the server supports only one action, it takes that action, no matter which value is specified in the nVerb parameter.

COleClientItem::Draw

Call this function to draw the OLE item into the specified bounding rectangle using the specified device context.

BOOL Draw(
    CDC* pDC,
    LPCRECT lpBounds,
    DVASPECT nDrawAspect = (DVASPECT)-1);

Parameters

pDC
Pointer to a CDC object used for drawing the OLE item.

lpBounds
Pointer to a CRect object or RECT structure that defines the bounding rectangle in which to draw the OLE item (in logical units determined by the device context).

nDrawAspect
Specifies the aspect of the OLE item, that is, how it should be displayed. If nDrawAspect is -1, the last aspect set by using SetDrawAspect is used. For more information about possible values for this flag, see SetDrawAspect.

Return Value

Nonzero if successful; otherwise 0.

Remarks

The function may use the metafile representation of the OLE item created by the OnDraw member function of COleServerItem.

Typically you use Draw for screen display, passing the screen device context as pDC. In this case, you need to specify only the first two parameters.

The lpBounds parameter identifies the rectangle in the target device context (relative to its current mapping mode). Rendering may involve scaling the picture and can be used by container applications to impose a view that scales between the displayed view and the final printed image.

For more information, see IViewObject::Draw in the Windows SDK.

COleClientItem::GetActiveView

Returns the view on which the item is in-place activated.

CView* GetActiveView() const;

Return Value

A pointer to the view; otherwise NULL if the item is not in-place activated.

COleClientItem::GetCachedExtent

Call this function to retrieve the OLE item's size.

BOOL GetCachedExtent(
    LPSIZE lpSize,
    DVASPECT nDrawAspect = (DVASPECT)-1);

Parameters

lpSize
Pointer to a SIZE structure or a CSize object that will receive the size information.

nDrawAspect
Specifies the aspect of the OLE item whose bounds are to be retrieved. For possible values, see SetDrawAspect.

Return Value

Nonzero if successful; 0 if the OLE item is blank.

Remarks

This function provides the same information as GetExtent. However, you can call GetCachedExtent to get extent information during the processing of other OLE handlers, such as OnChange. The dimensions are in MM_HIMETRIC units.

This is possible because GetCachedExtent uses the IViewObject2 interface rather than use the IOleObject interface to get the extent of this item. The IViewObject2 COM object caches the extent information used in the previous call to IViewObject::Draw.

For more information, see IViewObject2::GetExtent in the Windows SDK.

COleClientItem::GetClassID

Returns the class ID of the item into the memory pointed to by pClassID.

void GetClassID(CLSID* pClassID) const;

Parameters

pClassID
Pointer to an identifier of type CLSID to retrieve the class ID. For information on CLSID, see the Windows SDK.

Remarks

The class ID is a 128-bit number that uniquely identifies the application that edits the item.

For more information, see IPersist::GetClassID in the Windows SDK.

COleClientItem::GetClipboardData

Call this function to get a COleDataSource object containing all the data that would be placed on the Clipboard by a call to the CopyToClipboard member function.

void GetClipboardData(
    COleDataSource* pDataSource,
    BOOL bIncludeLink = FALSE,
    LPPOINT lpOffset = NULL,
    LPSIZE lpSize = NULL);

Parameters

pDataSource
Pointer to a COleDataSource object that will receive the data contained in the OLE item.

bIncludeLink
TRUE if link data should be included; otherwise FALSE.

lpOffset
The offset of the mouse cursor from the origin of the object in pixels.

lpSize
The size of the object in pixels.

Remarks

GetClipboardData is called as the default implementation of OnGetClipboardData. Override OnGetClipboardData only if you want to offer data formats in addition to those offered by CopyToClipboard. Place those formats in the COleDataSource object before or after calling CopyToClipboard, and then pass the COleDataSource object to the COleDataSource::SetClipboard function. For example, if you want the OLE item's position in its container document to accompany it on the Clipboard, you would define your own format for passing that information and place it in the COleDataSource before calling CopyToClipboard.

COleClientItem::GetDocument

Call this function to get a pointer to the document that contains the OLE item.

COleDocument* GetDocument() const;

Return Value

A pointer to the document that contains the OLE item. NULL if the item is not part of a document.

Remarks

This pointer allows access to the COleDocument object that you passed as an argument to the COleClientItem constructor.

COleClientItem::GetDrawAspect

Call the GetDrawAspect member function to determine the current "aspect," or view, of the item.

DVASPECT GetDrawAspect() const;

Return Value

A value from the DVASPECT enumeration, whose values are listed in the reference for SetDrawAspect.

Remarks

The aspect specifies how the item is to be rendered.

COleClientItem::GetExtent

Call this function to retrieve the OLE item's size.

BOOL GetExtent(
    LPSIZE lpSize,
    DVASPECT nDrawAspect = (DVASPECT)- 1);

Parameters

lpSize
Pointer to a SIZE structure or a CSize object that will receive the size information.

nDrawAspect
Specifies the aspect of the OLE item whose bounds are to be retrieved. For possible values, see SetDrawAspect.

Return Value

Nonzero if successful; 0 if the OLE item is blank.

Remarks

If the server application was written using the Microsoft Foundation Class Library, this function causes the OnGetExtent member function of the corresponding COleServerItem object to be called. Note that the retrieved size may differ from the size last set by the SetExtent member function; the size specified by SetExtent is treated as a suggestion. The dimensions are in MM_HIMETRIC units.

Note

Do not call GetExtent during the processing of an OLE handler, such as OnChange. Call GetCachedExtent instead.

For more information, see IOleObject::GetExtent in the Windows SDK.

COleClientItem::GetIconFromRegistry

Call this member function to retrieve a handle to an icon resource associated with the server of a particular CLSID.

HICON GetIconFromRegistry() const;

static HICON GetIconFromRegistry(CLSID& clsid);

Parameters

clsid
A reference to the CLSID for the server associated with the icon.

Return Value

A valid handle to the icon resource, or NULL if the server's icon, or a default icon, can't be found.

Remarks

This member function will not start the server or obtain an icon dynamically, even if the server is already running. Instead, this member function opens the server's executable image and retrieves the static icon associated with the server as it was registered.

COleClientItem::GetIconicMetafile

Retrieves the metafile used for drawing the item's icon.

HGLOBAL GetIconicMetafile();

Return Value

A handle to the metafile if successful; otherwise NULL.

Remarks

If there is no current icon, a default icon is returned. This is called automatically by the MFC/OLE dialogs and is usually not called directly.

This function also calls SetIconicMetafile to cache the metafile for later use.

COleClientItem::GetInPlaceWindow

Call the GetInPlaceWindow member function to get a pointer to the window in which the item has been opened for in-place editing.

CWnd* GetInPlaceWindow();

Return Value

A pointer to the item's in-place editing window; NULL if the item is not active or if its server is unavailable.

Remarks

This function should be called only for items that are in-place active.

COleClientItem::GetItemState

Call this function to get the OLE item's current state.

UINT GetItemState() const;

Return Value

A COleClientItem::ItemState enumerated value, which can be one of the following: emptyState, loadedState, openState, activeState, activeUIState. For information about these states, see the article Containers: Client-Item States.

Remarks

To be notified when the OLE item's state changes, use the OnChange member function.

For more information, see the article Containers: Client-Item States.

COleClientItem::GetLastStatus

Returns the status code of the last OLE operation.

SCODE GetLastStatus() const;

Return Value

An SCODE value.

Remarks

For member functions that return a BOOL value of FALSE, or other member functions that return NULL, GetLastStatus returns more detailed failure information. Be aware that most OLE member functions throw exceptions for more serious errors. The specific information on the interpretation of the SCODE depends on the underlying OLE call that last returned an SCODE value.

For more information on SCODE, see Structure of COM Error Codes in the Windows SDK documentation.

COleClientItem::GetLinkUpdateOptions

Call this function to get the current value of the link-update option for the OLE item.

OLEUPDATE GetLinkUpdateOptions();

Return Value

One of the following values:

  • OLEUPDATE_ALWAYS Update the linked item whenever possible. This option supports the Automatic link-update radio button in the Links dialog box.

  • OLEUPDATE_ONCALL Update the linked item only on request from the container application (when the UpdateLink member function is called). This option supports the Manual link-update radio button in the Links dialog box.

Remarks

This is an advanced operation.

This function is called automatically by the COleLinksDialog class.

For more information, see IOleLink::GetUpdateOptions in the Windows SDK.

COleClientItem::GetType

Call this function to determine whether the OLE item is embedded or linked, or static.

OLE_OBJTYPE GetType() const;

Return Value

An unsigned integer with one of the following values:

  • OT_LINK The OLE item is a link.

  • OT_EMBEDDED The OLE item is embedded.

  • OT_STATIC The OLE item is static, that is, it contains only presentation data, not native data, and thus cannot be edited.

COleClientItem::GetUserType

Call this function to get the user-visible string describing the OLE item's type, such as "Word document."

void GetUserType(
    USERCLASSTYPE nUserClassType,
    CString& rString);

Parameters

nUserClassType
A value indicating the desired variant of the string describing the OLE item's type. This can have one of the following values:

  • USERCLASSTYPE_FULL The full type name displayed to the user.

  • USERCLASSTYPE_SHORT A short name (15 characters maximum) for use in pop-up menus and the Edit Links dialog box.

  • USERCLASSTYPE_APPNAME Name of the application servicing the class.

rString
A reference to a CString object to which the string describing the OLE item's type is to be returned.

Remarks

This is often the entry in the system registration database.

If the full type name is requested but not available, the short name is used instead. If no entry for the type of OLE item is found in the registration database, or if there are no user types registered for the type of OLE item, then the user type currently stored in the OLE item is used. If that user type name is an empty string, "Unknown Object" is used.

For more information, see IOleObject::GetUserType in the Windows SDK.

COleClientItem::IsInPlaceActive

Call this function to see whether the OLE item is in-place active.

BOOL IsInPlaceActive() const;

Return Value

Nonzero if the OLE item is in-place active; otherwise 0.

Remarks

It is common to execute different logic depending on whether the item is being edited in place. The function checks whether the current item state is equal to either the activeState or the activeUIState.

COleClientItem::IsLinkUpToDate

Call this function to see whether the OLE item is up to date.

BOOL IsLinkUpToDate() const;

Return Value

Nonzero if the OLE item is up to date; otherwise 0.

Remarks

A linked item can be out of date if its source document has been updated. An embedded item that contains links within it can similarly become out of date. The function does a recursive check of the OLE item. Note that determining whether an OLE item is out of date can be as expensive as actually performing an update.

This is called automatically by the COleLinksDialog implementation.

For more information, see IOleObject::IsUpToDate in the Windows SDK.

COleClientItem::IsModified

Call this function to see whether the OLE item is dirty (modified since it was last saved).

BOOL IsModified() const;

Return Value

Nonzero if the OLE item is dirty; otherwise 0.

Remarks

For more information, see IPersistStorage::IsDirty in the Windows SDK.

COleClientItem::IsOpen

Call this function to see whether the OLE item is open; that is, opened in an instance of the server application running in a separate window.

BOOL IsOpen() const;

Return Value

Nonzero if the OLE item is open; otherwise 0.

Remarks

It is used to determine when to draw the object with a hatching pattern. An open object should have a hatch pattern drawn on top of the object. You can use a CRectTracker object to accomplish this.

COleClientItem::IsRunning

Call this function to see whether the OLE item is running; that is, whether the item is loaded and running in the server application.

BOOL IsRunning() const;

Return Value

Nonzero if the OLE item is running; otherwise 0.

Remarks

For more information, see OleIsRunning in the Windows SDK.

COleClientItem::OnActivate

Called by the framework to notify the item that it has just been activated in place.

virtual void OnActivate();

Remarks

Note that this function is called to indicate that the server is running, not to indicate that its user interface has been installed in the container application. At this point, the object does not have an active user interface (is not activeUIState). It has not installed its menus or toolbar. The OnActivateUI member function is called when that happens.

The default implementation calls the OnChange member function with OLE_CHANGEDSTATE as a parameter. Override this function to perform custom processing when an item becomes in-place active.

COleClientItem::OnActivateUI

The framework calls OnActivateUI when the object has entered the active UI state.

virtual void OnActivateUI();

Remarks

The object has now installed its tool bar and menus.

The default implementation remembers the server's HWND for later GetServerWindow calls.

COleClientItem::OnChange

Called by the framework when the user modifies, saves, or closes the OLE item.

virtual void OnChange(
    OLE_NOTIFICATION nCode,
    DWORD dwParam);

Parameters

nCode
The reason the server changed this item. It can have one of the following values:

  • OLE_CHANGED The OLE item's appearance has changed.

  • OLE_SAVED The OLE item has been saved.

  • OLE_CLOSED The OLE item has been closed.

  • OLE_CHANGED_STATE The OLE item has changed from one state to another.

dwParam
If nCode is OLE_SAVED or OLE_CLOSED, this parameter is not used. If nCode is OLE_CHANGED, this parameter specifies the aspect of the OLE item that has changed. For possible values, see the dwParam parameter of COleClientItem::Draw. If nCode is OLE_CHANGED_STATE, this parameter is a COleClientItem::ItemState enumerated value and describes the state being entered. It can have one of the following values: emptyState, loadedState, openState, activeState, or activeUIState.

Remarks

(If the server application is written using the Microsoft Foundation Class Library, this function is called in response to the Notify member functions of COleServerDoc or COleServerItem.) The default implementation marks the container document as modified if nCode is OLE_CHANGED or OLE_SAVED.

For OLE_CHANGED_STATE, the current state returned from GetItemState will still be the old state, meaning the state that was current prior to this state change.

Override this function to respond to changes in the OLE item's state. Typically you update the item's appearance by invalidating the area in which the item is displayed. Call the base class implementation at the beginning of your override.

COleClientItem::OnChangeItemPosition

Called by the framework to notify the container that the OLE item's extent has changed during in-place activation.

virtual BOOL OnChangeItemPosition(const CRect& rectPos);

Parameters

rectPos
Indicates the item's position relative to the container application's client area.

Return Value

Nonzero if the item's position is successfully changed; otherwise 0.

Remarks

The default implementation determines the new visible rectangle of the OLE item and calls SetItemRects with the new values. The default implementation calculates the visible rectangle for the item and passes that information to the server.

Override this function to apply special rules to the resize/move operation. If the application is written in MFC, this call results because the server called COleServerDoc::RequestPositionChange.

COleClientItem::OnDeactivate

Called by the framework when the OLE item transitions from the in-place active state ( activeState) to the loaded state, meaning that it is deactivated after an in-place activation.

virtual void OnDeactivate();

Remarks

Note that this function is called to indicate that the OLE item is closed, not that its user interface has been removed from the container application. When that happens, the OnDeactivateUI member function is called.

The default implementation calls the OnChange member function with OLE_CHANGEDSTATE as a parameter. Override this function to perform custom processing when an in-place active item is deactivated. For example, if you support the undo command in your container application, you can override this function to discard the undo state, indicating that the last operation performed on the OLE item cannot be undone once the item is deactivated.

COleClientItem::OnDeactivateAndUndo

Called by the framework when the user invokes the undo command after activating the OLE item in place.

virtual void OnDeactivateAndUndo();

Remarks

The default implementation calls DeactivateUI to deactivate the server's user interface. Override this function if you are implementing the undo command in your container application. In your override, call the base class version of the function and then undo the last command executed in your application.

For more information, see IOleInPlaceSite::DeactivateAndUndo in the Windows SDK.

COleClientItem::OnDeactivateUI

Called when the user deactivates an item that was activated in place.

virtual void OnDeactivateUI(BOOL bUndoable);

Parameters

bUndoable
Specifies whether the editing changes are undoable.

Remarks

This function restores the container application's user interface to its original state, hiding any menus and other controls that were created for in-place activation.

If bUndoable is FALSE, the container should disable the undo command, in effect discarding the undo state of the container, because it indicates that the last operation performed by the server is not undoable.

COleClientItem::OnDiscardUndoState

Called by the framework when the user performs an action that discards the undo state while editing the OLE item.

virtual void OnDiscardUndoState();

Remarks

The default implementation does nothing. Override this function if you are implementing the undo command in your container application. In your override, discard the container application's undo state.

If the server was written with the Microsoft Foundation Class Library, the server can cause this function to be called by calling COleServerDoc::DiscardUndoState.

For more information, see IOleInPlaceSite::DiscardUndoState in the Windows SDK.

COleClientItem::OnGetClipboardData

Called by the framework to get a COleDataSource object containing all the data that would be placed on the Clipboard by a call to either the CopyToClipboard or the DoDragDrop member function.

virtual COleDataSource* OnGetClipboardData(
    BOOL bIncludeLink,
    LPPOINT lpOffset,
    LPSIZE lpSize);

Parameters

bIncludeLink
Set this to TRUE if link data should be copied to the Clipboard. Set this to FALSE if your server application does not support links.

lpOffset
Pointer to the offset of the mouse cursor from the origin of the object in pixels.

lpSize
Pointer to the size of the object in pixels.

Return Value

A pointer to a COleDataSource object containing the Clipboard data.

Remarks

The default implementation of this function calls GetClipboardData.

COleClientItem::OnGetClipRect

The framework calls the OnGetClipRect member function to get the clipping-rectangle coordinates of the item that is being edited in place.

virtual void OnGetClipRect(CRect& rClipRect);

Parameters

rClipRect
Pointer to an object of class CRect that will hold the clipping-rectangle coordinates of the item.

Remarks

Coordinates are in pixels relative to the container application window's client area.

The default implementation simply returns the client rectangle of the view on which the item is in-place active.

COleClientItem::OnGetItemPosition

The framework calls the OnGetItemPosition member function to get the coordinates of the item that is being edited in place.

virtual void OnGetItemPosition(CRect& rPosition);

Parameters

rPosition
Reference to the CRect object that will contain the item's position coordinates.

Remarks

Coordinates are in pixels relative to the container application window's client area.

The default implementation of this function does nothing. Applications that support in-place editing require its implementation.

COleClientItem::OnGetWindowContext

Called by the framework when an item is activated in place.

virtual BOOL OnGetWindowContext(
    CFrameWnd** ppMainFrame,
    CFrameWnd** ppDocFrame,
    LPOLEINPLACEFRAMEINFO lpFrameInfo);

Parameters

ppMainFrame
Pointer to a pointer to the main frame window.

ppDocFrame
Pointer to a pointer to the document frame window.

lpFrameInfo
Pointer to an OLEINPLACEFRAMEINFO structure that will receive frame window information.

Return Value

Nonzero if successful; otherwise 0.

Remarks

This function is used to retrieve information about the OLE item's parent window.

If the container is an MDI application, the default implementation returns a pointer to the CMDIFrameWnd object in ppMainFrame and a pointer to the active CMDIChildWnd object in ppDocFrame. If the container is an SDI application, the default implementation returns a pointer to the CFrameWnd object in ppMainFrame and returns NULL in ppDocFrame. The default implementation also fills in the members of lpFrameInfo.

Override this function only if the default implementation does not suit your application; for example, if your application has a user-interface paradigm that differs from SDI or MDI. This is an advanced overridable.

For more information, see IOleInPlaceSite::GetWindowContext and the OLEINPLACEFRAMEINFO structure in the Windows SDK.

COleClientItem::OnInsertMenus

Called by the framework during in-place activation to insert the container application's menus into an empty menu.

virtual void OnInsertMenus(
    CMenu* pMenuShared,
    LPOLEMENUGROUPWIDTHS lpMenuWidths);

Parameters

pMenuShared
Points to an empty menu.

lpMenuWidths
Points to an array of six LONG values indicating how many menus are in each of the following menu groups: File, Edit, Container, Object, Window, Help. The container application is responsible for the File, Container, and Window menu groups, corresponding to elements 0, 2, and 4 of this array.

Remarks

This menu is then passed to the server, which inserts its own menus, creating a composite menu. This function can be called repeatedly to build several composite menus.

The default implementation inserts into pMenuShared the in-place container menus; that is, the File, Container, and Window menu groups. CDocTemplate::SetContainerInfo is used to set this menu resource. The default implementation also assigns the appropriate values to elements 0, 2, and 4 in lpMenuWidths, depending on the menu resource. Override this function if the default implementation is not appropriate for your application; for example, if your application does not use document templates for associating resources with document types. If you override this function, you should also override OnSetMenu and OnRemoveMenus. This is an advanced overridable.

For more information, see IOleInPlaceFrame::InsertMenus in the Windows SDK.

COleClientItem::OnRemoveMenus

Called by the framework to remove the container's menus from the specified composite menu when in-place activation ends.

virtual void OnRemoveMenus(CMenu* pMenuShared);

Parameters

pMenuShared
Points to the composite menu constructed by calls to the OnInsertMenus member function.

Remarks

The default implementation removes from pMenuShared the in-place container menus, that is, the File, Container, and Window menu groups. Override this function if the default implementation is not appropriate for your application; for example, if your application does not use document templates for associating resources with document types. If you override this function, you should probably override OnInsertMenus and OnSetMenu as well. This is an advanced overridable.

The submenus on pMenuShared may be shared by more than one composite menu if the server has repeatedly called OnInsertMenus. Therefore you should not delete any submenus in your override of OnRemoveMenus; you should only detach them.

For more information, see IOleInPlaceFrame::RemoveMenus in the Windows SDK.

COleClientItem::OnScrollBy

Called by the framework to scroll the OLE item in response to requests from the server.

virtual BOOL OnScrollBy(CSize sizeExtent);

Parameters

sizeExtent
Specifies the distances, in pixels, to scroll in the x and y directions.

Return Value

Nonzero if the item was scrolled; 0 if the item could not be scrolled.

Remarks

For example, if the OLE item is partially visible and the user moves outside the visible region while performing in-place editing, this function is called to keep the cursor visible. The default implementation does nothing. Override this function to scroll the item by the specified amount. Note that as a result of scrolling, the visible portion of the OLE item can change. Call SetItemRects to update the item's visible rectangle.

For more information, see IOleInPlaceSite::Scroll in the Windows SDK.

COleClientItem::OnSetMenu

Called by the framework two times when in-place activation begins and ends; the first time to install the composite menu and the second time (with holemenu equal to NULL) to remove it.

virtual void OnSetMenu(
    CMenu* pMenuShared,
    HOLEMENU holemenu,
    HWND hwndActiveObject);

Parameters

pMenuShared
Pointer to the composite menu constructed by calls to the OnInsertMenus member function and the InsertMenu function.

holemenu
Handle to the menu descriptor returned by the OleCreateMenuDescriptor function, or NULL if the dispatching code is to be removed.

hwndActiveObject
Handle to the editing window for the OLE item. This is the window that will receive editing commands from OLE.

Remarks

The default implementation installs or removes the composite menu and then calls the OleSetMenuDescriptor function to install or remove the dispatching code. Override this function if the default implementation is not appropriate for your application. If you override this function, you should probably override OnInsertMenus and OnRemoveMenus as well. This is an advanced overridable.

For more information, see OleCreateMenuDescriptor, OleSetMenuDescriptor, and IOleInPlaceFrame::SetMenu in the Windows SDK.

COleClientItem::OnShowControlBars

Called by the framework to show and hide the container application's control bars.

virtual BOOL OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Parameters

pFrameWnd
Pointer to the container application's frame window. This can be either a main frame window or an MDI child window.

bShow
Specifies whether control bars are to be shown or hidden.

Return Value

Nonzero if the function call causes a change in the control bars' state; 0 if the call causes no change, or if pFrameWnd does not point to the container's frame window.

Remarks

This function returns 0 if the control bars are already in the state specified by bShow. This would occur, for example, if the control bars are hidden and bShow is FALSE.

The default implementation removes the toolbar from the top-level frame window.

COleClientItem::OnShowItem

Called by the framework to display the OLE item, making it totally visible during editing.

virtual void OnShowItem();

Remarks

It is used when your container application supports links to embedded items (that is, if you have derived your document class from COleLinkingDoc). This function is called during in-place activation or when the OLE item is a link source and the user wants to edit it. The default implementation activates the first view on the container document. Override this function to scroll the document so that the OLE item is visible.

COleClientItem::OnUpdateFrameTitle

Called by the framework during in-place activation to update the frame window's title bar.

virtual BOOL OnUpdateFrameTitle();

Return Value

Nonzero if this function successfully updated the frame title, otherwise zero.

Remarks

The default implementation does not change the frame window title. Override this function if you want a different frame title for your application, for example " server app - item in docname" (as in, "Microsoft Excel - spreadsheet in REPORT.DOC"). This is an advanced overridable.

COleClientItem::ReactivateAndUndo

Call this function to reactivate the OLE item and undo the last operation performed by the user during in-place editing.

BOOL ReactivateAndUndo();

Return Value

Nonzero if successful; otherwise 0.

Remarks

If your container application supports the undo command, call this function if the user chooses the undo command immediately after deactivating the OLE item.

If the server application is written with the Microsoft Foundation Class Libraries, this function causes the server to call COleServerDoc::OnReactivateAndUndo.

For more information, see IOleInPlaceObject::ReactivateAndUndo in the Windows SDK.

COleClientItem::Release

Call this function to clean up resources used by the OLE item.

virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE);

Parameters

dwCloseOption
Flag specifying under what circumstances the OLE item is saved when it returns to the loaded state. For a list of possible values, see COleClientItem::Close.

Remarks

Release is called by the COleClientItem destructor.

For more information, see IUnknown::Release in the Windows SDK.

COleClientItem::Reload

Closes and reloads the item.

BOOL Reload();

Return Value

Nonzero if successful; otherwise 0.

Remarks

Call the Reload function after activating the item as an item of another type by a call to ActivateAs.

COleClientItem::Run

Runs the application associated with this item.

void Run();

Remarks

Call the Run member function to launch the server application before activating the item. This is done automatically by Activate and DoVerb, so it is usually not necessary to call this function. Call this function if it is necessary to run the server in order to set an item attribute, such as SetExtent, before executing DoVerb.

COleClientItem::SetDrawAspect

Call the SetDrawAspect member function to set the "aspect," or view, of the item.

virtual void SetDrawAspect(DVASPECT nDrawAspect);

Parameters

nDrawAspect
A value from the DVASPECT enumeration. This parameter can have one of the following values:

  • DVASPECT_CONTENT Item is represented in such a way that it can be displayed as an embedded object inside its container.

  • DVASPECT_THUMBNAIL Item is rendered in a "thumbnail" representation so that it can be displayed in a browsing tool.

  • DVASPECT_ICON Item is represented by an icon.

  • DVASPECT_DOCPRINT Item is represented as if it were printed using the Print command from the File menu.

Remarks

The aspect specifies how the item is to be rendered by Draw when the default value for that function's nDrawAspect argument is used.

This function is called automatically by the Change Icon (and other dialogs that call the Change Icon dialog directly) to enable the iconic display aspect when requested by the user.

COleClientItem::SetExtent

Call this function to specify how much space is available to the OLE item.

void SetExtent(
    const CSize& size,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Parameters

size
A CSize object that contains the size information.

nDrawAspect
Specifies the aspect of the OLE item whose bounds are to be set. For possible values, see SetDrawAspect.

Remarks

If the server application was written using the Microsoft Foundation Class Library, this causes the OnSetExtent member function of the corresponding COleServerItem object to be called. The OLE item can then adjust its display accordingly. The dimensions must be in MM_HIMETRIC units. Call this function when the user resizes the OLE item or if you support some form of layout negotiation.

For more information, see IOleObject::SetExtent in the Windows SDK.

COleClientItem::SetHostNames

Call this function to specify the name of the container application and the container's name for an embedded OLE item.

void SetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Parameters

lpszHost
Pointer to the user-visible name of the container application.

lpszHostObj
Pointer to an identifying string of the container that contains the OLE item.

Remarks

If the server application was written using the Microsoft Foundation Class Library, this function calls the OnSetHostNames member function of the COleServerDoc document that contains the OLE item. This information is used in window titles when the OLE item is being edited. Each time a container document is loaded, the framework calls this function for all the OLE items in the document. SetHostNames is applicable only to embedded items. It is not necessary to call this function each time an embedded OLE item is activated for editing.

This is also called automatically with the application name and document name when an object is loaded or when a file is saved under a different name. Accordingly, it is not usually necessary to call this function directly.

For more information, see IOleObject::SetHostNames in the Windows SDK.

COleClientItem::SetIconicMetafile

Caches the metafile used for drawing the item's icon.

BOOL SetIconicMetafile(HGLOBAL hMetaPict);

Parameters

hMetaPict
A handle to the metafile used for drawing the item's icon.

Return Value

Nonzero if successful; otherwise 0.

Remarks

Use GetIconicMetafile to retrieve the metafile.

The hMetaPict parameter is copied into the item; therefore, hMetaPict must be freed by the caller.

COleClientItem::SetItemRects

Call this function to set the bounding rectangle or the visible rectangle of the OLE item.

BOOL SetItemRects(
    LPCRECT lpPosRect = NULL,
    LPCRECT lpClipRect = NULL);

Parameters

lprcPosRect
Pointer to the rectangle containing the bounds of the OLE item relative to its parent window, in client coordinates.

lprcClipRect
Pointer to the rectangle containing the bounds of the visible portion of the OLE item relative to its parent window, in client coordinates.

Return Value

Nonzero if successful; otherwise, 0.

Remarks

This function is called by the default implementation of the OnChangeItemPosition member function. You should call this function whenever the position or visible portion of the OLE item changes. Usually this means that you call it from your view's OnSize and OnScrollBy member functions.

For more information, see IOleInPlaceObject::SetObjectRects in the Windows SDK.

COleClientItem::SetLinkUpdateOptions

Call this function to set the link-update option for the presentation of the specified linked item.

void SetLinkUpdateOptions(OLEUPDATE dwUpdateOpt);

Parameters

dwUpdateOpt
The value of the link-update option for this item. This value must be one of the following:

  • OLEUPDATE_ALWAYS Update the linked item whenever possible. This option supports the Automatic link-update radio button in the Links dialog box.

  • OLEUPDATE_ONCALL Update the linked item only on request from the container application (when the UpdateLink member function is called). This option supports the Manual link-update radio button in the Links dialog box.

Remarks

Typically, you should not change the update options chosen by the user in the Links dialog box.

For more information, see IOleLink::SetUpdateOptions in the Windows SDK.

COleClientItem::SetPrintDevice

Call this function to change the print-target device for this item.

BOOL SetPrintDevice(const DVTARGETDEVICE* ptd);
BOOL SetPrintDevice(const PRINTDLG* ppd);

Parameters

ptd
Pointer to a DVTARGETDEVICE data structure, which contains information about the new print-target device. Can be NULL.

ppd
Pointer to a PRINTDLG data structure, which contains information about the new print-target device. Can be NULL.

Return Value

Nonzero if the function was successful; otherwise 0.

Remarks

This function updates the print-target device for the item but does not refresh the presentation cache. To update the presentation cache for an item, call UpdateLink.

The arguments to this function contain information that the OLE system uses to identify the target device. The PRINTDLG structure contains information that Windows uses to initialize the common Print dialog box. After the user closes the dialog box, Windows returns information about the user's selections in this structure. The m_pd member of a CPrintDialog object is a PRINTDLG structure.

For more information about this structure, see PRINTDLG in the Windows SDK.

For more information, see DVTARGETDEVICE in the Windows SDK.

Call this function to update the presentation data of the OLE item immediately.

BOOL UpdateLink();

Return Value

Nonzero on success; otherwise 0.

Remarks

For linked items, the function finds the link source to obtain a new presentation for the OLE item. This process may involve running one or more server applications, which could be time-consuming. For embedded items, the function operates recursively, checking whether the embedded item contains links that might be out of date and updating them. The user can also manually update individual links using the Links dialog box.

For more information, see IOleLink::Update in the Windows SDK.

See also

MFC Sample MFCBIND
MFC Sample OCLIENT
CDocItem Class
Hierarchy Chart
COleServerItem Class