Vincent Povirk : ole32: Add support for rendering HENHMETAFILE clipboard objects.

Alexandre Julliard julliard at winehq.org
Mon Jun 22 09:04:09 CDT 2009


Module: wine
Branch: master
Commit: 51385a98ccaaf0fa0d98ceeb9e0d0b422ef5be9d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=51385a98ccaaf0fa0d98ceeb9e0d0b422ef5be9d

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Fri Jun 19 14:26:48 2009 -0500

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




More information about the wine-cvs mailing list