Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

This method initializes a newly created object with data from a specified data object, which can reside either in the same container or on the clipboard.

Syntax

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

Parameters

pDataObject

[in] Pointer to the IDataObjectinterface on the data object from which the initialization data is to be obtained.

This parameter can be NULL, which indicates that the caller wants to know if it is worthwhile trying to send data; that is,whether the container is capable of initializing an object from data passed to it.

The data object to be passed can be based on either the selection in the container document or on data transferred to the container from an external source.

fCreation

[in] Boolean value that is set to TRUE if the container is inserting a new object inside itself and initializing that object with data from the current selection.

The values is set to FALSE if a more general programmatic data transfer, most likely from a source other than the current selection.

dwReserved

[in] Reserved for future use; set to zero.

Return Value

One of the values in the following table is returned.

Value Description

S_OK

If pDataObjectis not NULL, the object successfully attempted to initialize itself from the provided data.

If pDataObjectis NULL, the object can attempt a successful initialization.

S_FALSE

If pDataObjectis not NULL, the object made no attempt to initialize itself.

If pDataObjectis NULL, the object cannot attempt to initialize itself from the data provided.

E_NOTIMPL

The object does not support InitFromData.

OLE_E_NOTRUNNING

The object is not running and therefore cannot perform the operation.

Remarks

This method enables a container document to insert within itself a new object whose content is based on a current data selection within the container. For example, a spreadsheet document might want to create a graph object based on data in a selected range of cells.

Using this method, a container can also replace the contents of an embedded object with data transferred from another source. This provides a convenient way of updating an embedded object.

To determine whether the platform supports this interface, see Determining Supported COM APIs.

Notes to Callers

Following initialization, the container should call IOleObject::GetMiscStatusto check the value of the OLEMISC_INSERTNOTREPLACE bit.

If the bit is on, the new object inserts itself following the selected data.

If the bit is off, the new object replaces the selected data.

Notes to Implementers

A container specifies whether to base a new object on the current selection by passing TRUE or FALSE to the fCreationparameter, or by the object returning S_FALSE:

  • If fCreationis TRUE, the container is attempting to create a newinstance of an object, initializing it with the selected data specified by the data object.

  • If fCreationis FALSE, the caller is attempting to replace the object's current contents with that pointed to by pDataObject.

    The usual constraints that apply to an object during a paste operation should be applied here. For example, if the type of the data provided is unacceptable, the object should fail to initialize and return S_FALSE.

  • If the object returns S_FALSE, it cannot initialize itself from the provided data.

Requirements

Header Oleidl.h, oleidl.idl
Library oleaut32.lib, uuid.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also