25#define NONAMELESSUNION
55 hr = IDataObject_EnumFormatEtc(
data, DATADIR_GET, &enum_fmt);
61 hr = IEnumFORMATETC_Next(enum_fmt, 1, &
fmt,
NULL);
68 IEnumFORMATETC_Release(enum_fmt);
79 IEnumFORMATETC_Release(enum_fmt);
88 fmt->dwAspect = DVASPECT_CONTENT;
110 if (src_cf) *src_cf = 0;
114 med.tymed = TYMED_ISTORAGE;
116 med.pUnkForRelease =
NULL;
117 hr = IDataObject_GetDataHere(
data, &
fmt, &med);
126 med.tymed = TYMED_ISTORAGE;
128 med.pUnkForRelease =
NULL;
129 hr = IDataObject_GetDataHere(
data, &
fmt, &med);
141 hr = IDataObject_QueryGetData(
data, &
fmt);
144 if (src_cf) *src_cf = fmt_id[
i];
154 hr = IPersistStorage_GetClassID(persist, &
clsid);
157 hr = IStorage_SetClass(stg, &
clsid);
160 hr = IPersistStorage_Save(persist, stg,
FALSE);
163 hr = IPersistStorage_SaveCompleted(persist,
NULL);
166 IPersistStorage_Release(persist);
178 DWORD renderopt,
ULONG num_cache_fmts,
DWORD *adv_flags, FORMATETC *cache_fmts,
185 FIXME(
"(%p, %s, %08x, %08x, %d, %p, %p, %p, %p, %p, %p, %p): stub\n",
208 DWORD advf = ADVF_PRIMEFIRST;
222 FIXME(
"%p,%s,%08x,%p,%p,%p,%p: semi-stub\n",
244 TRACE(
"(%p, %s, 0x%08x, %p, %p, %p, %p)\n",
250 if (renderopt != OLERENDER_FORMAT)
252 FIXME(
"semi-stub\n");
259 hr = IDataObject_GetData(
data,
fmt, &stgmedium);
262 switch (
fmt->cfFormat)
287 hr = IOleObject_QueryInterface(ole_object, &
IID_IOleCache2, (
void **)&ole_cache);
296 hr = IPersistStorage_InitNew(persist, stg);
299 hr = IOleCache2_Cache(ole_cache,
fmt, ADVF_PRIMEFIRST, &connection);
302 hr = IOleCache2_SetData(ole_cache,
fmt, &stgmedium,
TRUE);
304 stgmedium.tymed = TYMED_NULL;
306 hr = IOleObject_GetUserType(ole_object, USERCLASSTYPE_FULL, &ole_typename);
313 hr = IPersistStorage_Save(persist, stg,
TRUE);
316 hr = IPersistStorage_SaveCompleted(persist,
NULL);
319 hr = IOleObject_QueryInterface(ole_object, iid,
obj);
322 if (stgmedium.tymed == TYMED_NULL)
325 IPersistStorage_Release(persist);
327 IOleCache2_Release(ole_cache);
329 IOleObject_Release(ole_object);
347 TRACE(
"cls %s, %s, iid %s, flags %d, render opts %d, num fmts %d, adv flags %p, fmts %p\n",
debugstr_guid(
clsid),
350 for (
i = 0;
i < num_fmts;
i++)
357 IMoniker_Release( mon );
366 if (renderopt == OLERENDER_FORMAT)
371 for (
i = 0;
i < num_fmts;
i++)
376 memset( &med, 0,
sizeof(med) );
379 hr = IOleCache_Cache(
cache,
fmts +
i, adv_flags[
i], &dummy_conn );
390 hr = IUnknown_QueryInterface( unk, iid,
obj );
394 if (unk) IUnknown_Release( unk );
395 IDataObject_Release(
data );
405 DWORD advf = ADVF_PRIMEFIRST;
430 TRACE(
"(%p,%x,%x)\n", hSrc, cfFormat, uiFlags);
446 if (!nEntries)
return NULL;
472 if (!bm.bmBits)
return NULL;
487 if (!hDst)
return NULL;
512 TRACE(
"returning %p\n", hDst);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
const CLSID CLSID_Picture_EnhMetafile
const CLSID CLSID_Picture_Dib
const CLSID CLSID_Picture_Metafile
const char * debugstr_formatetc(const FORMATETC *formatetc) DECLSPEC_HIDDEN
#define HeapFree(x, y, z)
UINT embedded_object_clipboard_format
UINT filename_clipboard_format
UINT embed_source_clipboard_format
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
HRESULT WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID *ppvObj)
HRESULT WINAPI WriteClassStg(IStorage *pStg, REFCLSID rclsid)
HRESULT WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType)
HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum GLboolean sink
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
#define memcpy(s1, s2, n)
static IOleClientSite * client_site
static const LOGPALETTE logpalette
interface IStorage * LPSTORAGE
interface IDataObject * LPDATAOBJECT
HRESULT WINAPI OleCreateLinkFromData(IDataObject *data, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *stg, void **obj)
HRESULT WINAPI OleCreateFromDataEx(IDataObject *data, REFIID iid, DWORD flags, DWORD renderopt, ULONG num_cache_fmts, DWORD *adv_flags, FORMATETC *cache_fmts, IAdviseSink *sink, DWORD *conns, IOleClientSite *client_site, IStorage *stg, void **obj)
HRESULT WINAPI OleCreateFromData(LPDATAOBJECT data, REFIID iid, DWORD renderopt, LPFORMATETC fmt, LPOLECLIENTSITE client_site, LPSTORAGE stg, LPVOID *obj)
HRESULT WINAPI OleQueryCreateFromData(IDataObject *data)
static HRESULT get_storage(IDataObject *data, IStorage *stg, UINT *src_cf, BOOL other_fmts)
HRESULT WINAPI OleCreateStaticFromData(IDataObject *data, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *stg, void **obj)
HRESULT WINAPI OleCreateFromFileEx(REFCLSID clsid, const OLECHAR *filename, REFIID iid, DWORD flags, DWORD renderopt, ULONG num_fmts, DWORD *adv_flags, FORMATETC *fmts, IAdviseSink *sink, DWORD *conns, IOleClientSite *client_site, IStorage *stg, void **obj)
HANDLE WINAPI OleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags)
HRESULT WINAPI OleCreateFromFile(REFCLSID clsid, const OLECHAR *filename, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *storage, void **obj)
static void init_fmtetc(FORMATETC *fmt, CLIPFORMAT cf, TYMED tymed)
HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID riid, LPVOID *ppvResult)
const GUID IID_IOleCache2
const GUID IID_IDataObject
const GUID IID_IPersistStorage
const GUID IID_IOleObject
#define FIELD_OFFSET(t, f)
UINT WINAPI GetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT cEntries, LPPALETTEENTRY ppe)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HPALETTE WINAPI CreatePalette(_In_reads_(_Inexpressible_(2 *sizeof(WORD)+plpal->palNumEntries *sizeof(PALETTEENTRY))) const LOGPALETTE *)
HBITMAP WINAPI CreateBitmapIndirect(_In_ const BITMAP *pbm)
HENHMETAFILE WINAPI CopyEnhMetaFileW(_In_ HENHMETAFILE hemfSrc, _In_opt_ LPCWSTR pszFile)
HMETAFILE WINAPI CopyMetaFileW(_In_ HMETAFILE hmfSrc, _In_opt_ LPCWSTR pszFile)
LONG WINAPI GetBitmapBits(_In_ HBITMAP hbit, _In_ LONG cb, _Out_writes_bytes_(cb) LPVOID lpvBits)