OleSetAutoConvert
Andreas Mohr
amohr at codeweavers.com
Fri Feb 2 14:37:35 CST 2001
Hi all,
take a stab at implementing OleSetAutoConvert
(shows as FIXME for Photoshop 5.5), and recode OleGetAutoConvert a bit.
Andreas Mohr
-------------- next part --------------
Determining best CVS host...
Using CVSROOT :pserver:cvs at wine.codeweavers.com:/home/cvs/wine
Index: dlls/ole32/compobj.c
===================================================================
RCS file: /home/cvs/wine/wine/dlls/ole32/compobj.c,v
retrieving revision 1.35
diff -u -r1.35 compobj.c
--- dlls/ole32/compobj.c 2001/01/17 22:03:19 1.35
+++ dlls/ole32/compobj.c 2001/02/03 02:14:05
@@ -1976,21 +1976,68 @@
*/
HRESULT WINAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew)
{
- HKEY hkey;
- char buf[200];
- WCHAR wbuf[200];
- DWORD len;
-
- sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
- if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
- return REGDB_E_CLASSNOTREG;
- len = 200;
- if (RegQueryValueA(hkey,"AutoConvertTo",buf,&len))
- return REGDB_E_KEYMISSING;
- RegCloseKey(hkey);
- MultiByteToWideChar( CP_ACP, 0, buf, -1, wbuf, sizeof(wbuf)/sizeof(WCHAR) );
- CLSIDFromString(wbuf,pClsidNew);
- return S_OK;
+ HKEY hkey = 0;
+ char buf[200];
+ WCHAR wbuf[200];
+ DWORD len;
+ HRESULT res = S_OK;
+
+ sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
+ if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
+ {
+ res = REGDB_E_CLASSNOTREG;
+ goto done;
+ }
+ len = 200;
+ /* we can just query for the default value of AutoConvertTo key like that,
+ without opening the AutoConvertTo key and querying for NULL (default) */
+ if (RegQueryValueA(hkey,"AutoConvertTo",buf,&len))
+ {
+ res = REGDB_E_KEYMISSING;
+ goto done;
+ }
+ MultiByteToWideChar( CP_ACP, 0, buf, -1, wbuf, sizeof(wbuf)/sizeof(WCHAR) );
+ CLSIDFromString(wbuf,pClsidNew);
+done:
+ if (hkey) RegCloseKey(hkey);
+
+ return res;
+}
+
+/******************************************************************************
+ * OleSetAutoConvert [OLE32.126]
+ */
+HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
+{
+ HKEY hkey = 0, hkeyConvert = 0;
+ char buf[200], szClsidNew[200];
+ HRESULT res = S_OK;
+
+ TRACE("(%p,%p);\n", clsidOld, clsidNew);
+ sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
+ WINE_StringFromCLSID(clsidNew, szClsidNew);
+ if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
+ {
+ res = REGDB_E_CLASSNOTREG;
+ goto done;
+ }
+ if (RegCreateKeyA(hkey, "AutoConvertTo", &hkeyConvert))
+ {
+ res = REGDB_E_WRITEREGDB;
+ goto done;
+ }
+ if (RegSetValueExA(hkeyConvert, NULL, 0,
+ REG_SZ, (LPBYTE)szClsidNew, strlen(szClsidNew)+1))
+ {
+ res = REGDB_E_WRITEREGDB;
+ goto done;
+ }
+
+done:
+ if (hkeyConvert) RegCloseKey(hkeyConvert);
+ if (hkey) RegCloseKey(hkey);
+
+ return res;
}
/***********************************************************************
Index: dlls/ole32/ole2stubs.c
===================================================================
RCS file: /home/cvs/wine/wine/dlls/ole32/ole2stubs.c,v
retrieving revision 1.14
diff -u -r1.14 ole2stubs.c
--- dlls/ole32/ole2stubs.c 2000/12/01 23:58:29 1.14
+++ dlls/ole32/ole2stubs.c 2001/02/03 02:14:05
@@ -67,15 +67,6 @@
}
/******************************************************************************
- * OleSetAutoConvert [OLE32.@]
- */
-HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
-{
- FIXME("(%p,%p), stub!\n", clsidOld, clsidNew);
- return S_OK;
-}
-
-/******************************************************************************
* IsAccelerator [OLE32.75]
*/
BOOL WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD* lpwCmd)
More information about the wine-patches
mailing list