OleCreateStaticFromData

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

HRESULT OleCreateStaticFromData(

LPDATAOBJECT pSrcDataObj,
//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
LPFORMATETC pFormatEtc,
//Depending on renderopt, pointer to value from FORMATETC
LPOLECLIENTSITE pClientSite,
//Points to instance of IOleClientSite
LPSTORAGE pStg,
//Points to instance of IStorage used to store object
LPVOID FAR* ppvObj
//Receives a pointer to the interface requested in riid
);

Parameters

pSrcDataObj

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

riid

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

renderopt

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.

pFormatEtc

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.

pClientSite

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

pStg

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

ppvObj

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

Return Value

S_OK

Indicates that the object was successfully created.

Comments

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

OleCreateFromData

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