[PATCH] Add DISPID_PICT_RENDER support to OLEPictureImpl_Invoke

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Mon Jul 11 06:39:21 CDT 2011


---
 dlls/oleaut32/olepicture.c |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
index 8081785..efdb079 100644
--- a/dlls/oleaut32/olepicture.c
+++ b/dlls/oleaut32/olepicture.c
@@ -2021,6 +2021,14 @@ static HRESULT WINAPI OLEPictureImpl_Invoke(
       return DISP_E_BADPARAMCOUNT;
     }
   }
+  else if (wFlags & DISPATCH_METHOD)
+  {
+    if (pDispParams->cArgs != 10)
+    {
+      ERR("param count for DISPATCH_METHOD was %d instead of 10\n", pDispParams->cArgs);
+      return DISP_E_BADPARAMCOUNT;
+    }
+  }
 
   switch (dispIdMember)
   {
@@ -2080,6 +2088,24 @@ static HRESULT WINAPI OLEPictureImpl_Invoke(
       return IPicture_get_Height(&This->IPicture_iface, &V_I4(pVarResult));
     }
     break;
+  case DISPID_PICT_RENDER:
+    if (wFlags & DISPATCH_METHOD)
+    {
+      TRACE("DISPID_PICT_RENDER %d %d %d %d %d %d %d %d %d %d\n", 
+            V_VT(&pDispParams->rgvarg[0]), V_VT(&pDispParams->rgvarg[1]),
+            V_VT(&pDispParams->rgvarg[2]), V_VT(&pDispParams->rgvarg[3]),
+            V_VT(&pDispParams->rgvarg[4]), V_VT(&pDispParams->rgvarg[5]),
+            V_VT(&pDispParams->rgvarg[6]), V_VT(&pDispParams->rgvarg[7]),
+            V_VT(&pDispParams->rgvarg[8]), V_VT(&pDispParams->rgvarg[9]));
+
+      return IPicture_Render(&This->IPicture_iface, (HDC)V_I4(&pDispParams->rgvarg[9]),
+                             V_I4(&pDispParams->rgvarg[8]), V_I4(&pDispParams->rgvarg[7]),
+                             V_I4(&pDispParams->rgvarg[6]), V_I4(&pDispParams->rgvarg[5]),
+                             V_I4(&pDispParams->rgvarg[4]), V_I4(&pDispParams->rgvarg[3]),
+                             V_I4(&pDispParams->rgvarg[2]), V_I4(&pDispParams->rgvarg[1]),
+                             (LPCRECT)&V_I4(&pDispParams->rgvarg[0]));                             
+    }
+    break;
   }
 
   ERR("invalid dispid 0x%x or wFlags 0x%x\n", dispIdMember, wFlags);
-- 
1.7.4.1


--------------000604030704030306030201--



More information about the wine-patches mailing list