Piotr Caban : shell32: Added partial implementation of SHPropStgWriteMultiple.

Alexandre Julliard julliard at winehq.org
Tue Nov 16 12:45:46 CST 2010


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Nov 16 14:58:22 2010 +0100

shell32: Added partial implementation of SHPropStgWriteMultiple.

---

 dlls/shell32/shellole.c |   35 +++++++++++++++++++++++++++++++++--
 1 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index 5168e38..d678276 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -752,6 +752,37 @@ HRESULT WINAPI SHPropStgReadMultiple(IPropertyStorage *pps, UINT uCodePage,
 HRESULT WINAPI SHPropStgWriteMultiple(IPropertyStorage *pps, UINT *uCodePage,
         ULONG cpspec, const PROPSPEC *rgpspec, PROPVARIANT *rgvar, PROPID propidNameFirst)
 {
-    FIXME("stub\n");
-    return E_NOTIMPL;
+    STATPROPSETSTG stat;
+    UINT codepage;
+    HRESULT hres;
+
+    FIXME("%p %p %u %p %p %d\n", pps, uCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
+
+    hres = IPropertyStorage_Stat(pps, &stat);
+    if(FAILED(hres))
+        return hres;
+
+    if(uCodePage && *uCodePage)
+        codepage = *uCodePage;
+    else {
+        PROPSPEC prop;
+        PROPVARIANT ret;
+
+        prop.ulKind = PRSPEC_PROPID;
+        prop.u.propid = PID_CODEPAGE;
+        hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &ret);
+        if(FAILED(hres))
+            return hres;
+        if(ret.vt!=VT_I2 || !ret.u.iVal)
+            return E_FAIL;
+
+        codepage = ret.u.iVal;
+        if(uCodePage)
+            *uCodePage = codepage;
+    }
+
+    /* TODO: do something with codepage and stat */
+
+    hres = IPropertyStorage_WriteMultiple(pps, cpspec, rgpspec, rgvar, propidNameFirst);
+    return hres;
 }




More information about the wine-cvs mailing list