From 5dc2ae6a543c2819345ecbcd9004ed0c173fa2a7 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Fri, 19 Jun 2009 14:26:48 -0500 Subject: [PATCH] ole32: add support for rendering HENHMETAFILE clipboard objects --- dlls/ole32/clipboard.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index 81231aa..208645e 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -744,6 +744,30 @@ static HRESULT get_data_from_global(IDataObject *data, FORMATETC *fmt, HGLOBAL * return hr; } +static HRESULT get_data_from_enhmetafile(IDataObject *data, FORMATETC *fmt, HGLOBAL *mem) +{ + HENHMETAFILE copy; + HRESULT hr; + FORMATETC mem_fmt; + STGMEDIUM med; + + *mem = NULL; + + mem_fmt = *fmt; + mem_fmt.tymed = TYMED_ENHMF; + + hr = IDataObject_GetData(data, &mem_fmt, &med); + if(FAILED(hr)) return hr; + + copy = CopyEnhMetaFileW(med.u.hEnhMetaFile, NULL); + if(copy) *mem = (HGLOBAL)copy; + else hr = E_FAIL; + + ReleaseStgMedium(&med); + + return hr; +} + /*********************************************************************** * render_format * @@ -773,6 +797,10 @@ static HRESULT render_format(IDataObject *data, LPFORMATETC fmt) { hr = get_data_from_global(data, fmt, &clip_data); } + else if(fmt->tymed & TYMED_ENHMF) + { + hr = get_data_from_enhmetafile(data, fmt, &clip_data); + } else { FIXME("Unhandled tymed %x\n", fmt->tymed); -- 1.5.4.3