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);
interface IStorage * LPSTORAGE
static const LOGPALETTE logpalette
static void init_fmtetc(FORMATETC *fmt, CLIPFORMAT cf, TYMED tymed)
UINT WINAPI GetPaletteEntries(HPALETTE hpal, UINT iStartIndex, UINT cEntries, LPPALETTEENTRY ppe)
static IOleClientSite * client_site
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
UINT filename_clipboard_format
HBITMAP WINAPI CreateBitmapIndirect(_In_ const BITMAP *pbm)
HRESULT WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
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)
HRESULT WINAPI OleCreateStaticFromData(IDataObject *data, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *stg, void **obj)
const GUID IID_IDataObject
UINT embedded_object_clipboard_format
const GUID IID_IPersistStorage
HANDLE WINAPI OleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags)
const CLSID CLSID_Picture_Dib
GLsizei GLenum GLboolean sink
HRESULT WINAPI OleQueryCreateFromData(IDataObject *data)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
HRESULT WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID *ppvObj)
HRESULT WINAPI OleCreateFromData(LPDATAOBJECT data, REFIID iid, DWORD renderopt, LPFORMATETC fmt, LPOLECLIENTSITE client_site, LPSTORAGE stg, LPVOID *obj)
HRESULT WINAPI OleCreateLinkFromData(IDataObject *data, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *stg, void **obj)
const GUID IID_IOleObject
static HRESULT get_storage(IDataObject *data, IStorage *stg, UINT *src_cf, BOOL other_fmts)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
const char * debugstr_formatetc(const FORMATETC *formatetc) DECLSPEC_HIDDEN
HPALETTE WINAPI CreatePalette(_In_reads_(_Inexpressible_(2 *sizeof(WORD)+plpal->palNumEntries *sizeof(PALETTEENTRY))) const LOGPALETTE *)
HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk)
const CLSID CLSID_Picture_EnhMetafile
LONG WINAPI GetBitmapBits(_In_ HBITMAP hbit, _In_ LONG cb, _Out_writes_bytes_(cb) LPVOID lpvBits)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
HENHMETAFILE WINAPI CopyEnhMetaFileW(_In_ HENHMETAFILE hemfSrc, _In_opt_ LPCWSTR pszFile)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
#define memcpy(s1, s2, n)
HRESULT WINAPI OleCreateFromFile(REFCLSID clsid, const OLECHAR *filename, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *storage, void **obj)
interface IDataObject * LPDATAOBJECT
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
const GUID IID_IOleCache2
HRESULT WINAPI WriteClassStg(IStorage *pStg, REFCLSID rclsid)
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
const CLSID CLSID_Picture_Metafile
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
HMETAFILE WINAPI CopyMetaFileW(_In_ HMETAFILE hmfSrc, _In_opt_ LPCWSTR pszFile)
#define FIELD_OFFSET(t, f)
HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID riid, LPVOID *ppvResult)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
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)
UINT embed_source_clipboard_format
WINE_DEFAULT_DEBUG_CHANNEL(ole)
#define HeapFree(x, y, z)