Module: wine Branch: master Commit: b490803b37c8e0ef781914ee2c448ae05ba20154 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b490803b37c8e0ef781914ee2c...
Author: Piotr Caban piotr@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; }