Patch to implement OLE32.OleDraw

Troy Rollo wine at troy.rollo.name
Tue Jun 24 20:23:47 CDT 2003


Index: dlls/ole32/ole2.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/ole2.c,v
retrieving revision 1.42
diff -u -r1.42 ole2.c
--- dlls/ole32/ole2.c	28 Jan 2003 01:06:20 -0000	1.42
+++ dlls/ole32/ole2.c	25 Jun 2003 01:18:15 -0000
@@ -2256,6 +2244,45 @@
     mf->yExt = 20; /* dito */
     mf->hMF = CloseMetaFile16(HDC_16(hdc));
     return hmf;
+}
+
+/******************************************************************************
+ * OleDraw (OLE32.101)
+ *
+ * The operation of this function is documented literally in the WinAPI
+ * documentation to involve a QueryInterface for the IViewObject interface,
+ * followed by a call to IViewObject::Draw.
+ */
+HRESULT WINAPI OleDraw(
+	IUnknown *pUnk,
+	DWORD dwAspect,
+	HDC hdcDraw,
+	LPCRECT lprcBounds)
+{
+  HRESULT hres;
+  IViewObject *viewobject;
+
+  hres = IUnknown_QueryInterface(pUnk,
+				 &IID_IViewObject,
+				 (void**)&viewobject);
+
+  if (SUCCEEDED(hres))
+  {
+    RECTL rectl;
+
+    rectl.left = lprcBounds->left;
+    rectl.right = lprcBounds->right;
+    rectl.top = lprcBounds->top;
+    rectl.bottom = lprcBounds->bottom;
+    hres = IViewObject_Draw(viewobject, dwAspect, -1, 0, 0, 0, hdcDraw, 
&rectl, 0, 0, 0);
+
+    IViewObject_Release(viewobject);
+    return hres;
+  }
+  else
+  {
+    return DV_E_NOIVIEWOBJECT;
+  }
 }
 
 
/******************************************************************************
Index: dlls/ole32/ole32.spec
===================================================================
RCS file: /home/wine/wine/dlls/ole32/ole32.spec,v
retrieving revision 1.46
diff -u -r1.46 ole32.spec
--- dlls/ole32/ole32.spec	28 Mar 2003 19:33:04 -0000	1.46
+++ dlls/ole32/ole32.spec	25 Jun 2003 01:18:15 -0000
@@ -98,7 +98,7 @@
  98 stdcall OleCreateStaticFromData(ptr ptr long ptr ptr ptr ptr)
  99 stdcall OleDestroyMenuDescriptor(long)
 100 stub OleDoAutoConvert
-101 stub OleDraw
+101 stdcall OleDraw(ptr long ptr ptr)
 102 stdcall OleDuplicateData(long long long)
 103 stdcall OleFlushClipboard()
 104 stdcall OleGetAutoConvert(ptr ptr)




More information about the wine-patches mailing list