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 

 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 
 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