The OleCreateStaticFromData function creates a static object (containing only a representation, with no native data) from a data transfer object.

HRESULT OleCreateStaticFromData(

//Data transfer object holding data used to create new object
REFIID riid,
//Interface to be used to communicate with the new object
DWORD renderopt,
//Value from OLERENDER
//Depending on renderopt, pointer to value from FORMATETC
//Points to instance of IOleClientSite
//Points to instance of IStorage used to store object
//Receives a pointer to the interface requested in riid



Points to the data transfer object that holds the data from which the object will be created.


Identifies the interface with which the caller is to communicate with the new object (usually IID_IOleObject).


A value from the enumeration OLERENDER indicating the locally cached drawing or data-retrieval capabilities that the container wants in the newly created component. It is an error to pass the render options OLERENDER_NONE or OLERENDER_ASIS to this function.


Depending on which of the OLERENDER flags is used as the value of renderopt, may be one of the FORMATETC enumeration values. Refer to the OLERENDER enumeration for restrictions.


Points to an instance of IOleClientSite, the primary interface through which the object will request services from its container. May be NULL.


Points to an instance of the IStorage interface to be used as the storage for the object. This parameter may not be NULL.


When the function returns successfully, contains a pointer to the interface requested in riid on the newly created object.

Return Value


Indicates that the object was successfully created.


The OleCreateStaticFromData function can convert any object that provides an IDataObject interface to a static object. It is useful in implementing the Convert To Picture option for OLE linking or embedding.

Static objects can be created only if the source supports one of the OLE-rendered clipboard formats: CF_METAFILEPICT, CF_DIB, or CF_ BITMAP, and CF_ENHMF.

Static objects can be pasted from the clipboard using OleCreateStaticFromData. The OleQueryCreateFromData function will return OLE_S_STATIC if one of CF_METAFILEPICT, CF_DIB, or CF_BITMAP is present and an OLE format is not present. But, in that case, the OleCreateFromData function does not automatically create the static object pics/OLE00090000.gif if the container will be pasting a static object it should call OleCreateStaticFromData.

The new static object is of class CLSID_StaticMetafile (in the case of CF_METAFILEPICT) and CLSID_StaticDib (in the case of CF_DIB or CF_BITMAP). The static object sets the OLEMISC_STATIC and OLE_CANTLINKINSIDE bits returned from IOleObject::GetMiscStatus. The static object will have the aspect DVASPECT_CONTENT and a LINDEX of -1.

The pDataObject is still valid after OleCreateStaticFromData returns. It is the caller's responsibility to free pDataObject pics/OLE00090000.gif OLE does not release it.

There cannot be more than one presentation stream in a static object.

Note The OLESTREAM<->IStorage conversion functions also convert static objects.

See Also


Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database