PATCH: CoTreatAsClass

Marcus Meissner marcus at jet.franken.de
Wed Jan 2 17:09:23 CST 2002


Hi,

CoTreatAsClass just sets a respective registry key, just like
OleSetAutoConvert.

RegCreateKeyA, RegSetValueExA can be merged into RegSetValueA -> done.

Ciao, Marcus

Changelog:
	Implemented CoTreatAsClass, simplified OleSetAutoConvert.

Index: ole2stubs.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/ole2stubs.c,v
retrieving revision 1.18
diff -u -r1.18 ole2stubs.c
--- ole2stubs.c	2001/06/20 23:03:16	1.18
+++ ole2stubs.c	2002/01/02 21:23:16
@@ -58,15 +58,6 @@
 }
 
 /******************************************************************************
- *              CoTreatAsClass        [OLE32.46]
- */
-HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew)
-{
-  FIXME("(%p,%p), stub!\n", clsidOld, clsidNew);
-  return S_OK;
-}
-
-/******************************************************************************
  *              SetConvertStg        [OLE32.142]
  */
 HRESULT WINAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert)
Index: compobj.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/compobj.c,v
retrieving revision 1.49
diff -u -r1.49 compobj.c
--- compobj.c	2002/01/01 00:24:31	1.49
+++ compobj.c	2002/01/02 21:23:18
@@ -2125,11 +2125,11 @@
  */
 HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
 {
-    HKEY hkey = 0, hkeyConvert = 0;
+    HKEY hkey = 0;
     char buf[200], szClsidNew[200];
     HRESULT res = S_OK;
 
-    TRACE("(%p,%p);\n", clsidOld, clsidNew);
+    TRACE("(%s,%s)\n", debugstr_guid(clsidOld), debugstr_guid(clsidNew));
     sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
     WINE_StringFromCLSID(clsidNew, szClsidNew);
     if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
@@ -2137,24 +2137,45 @@
         res = REGDB_E_CLASSNOTREG;
 	goto done;
     }
-    if (RegCreateKeyA(hkey, "AutoConvertTo", &hkeyConvert))
+    if (RegSetValueA(hkey, "AutoConvertTo", REG_SZ, szClsidNew, strlen(szClsidNew)+1))
     {
         res = REGDB_E_WRITEREGDB;
 	goto done;
     }
-    if (RegSetValueExA(hkeyConvert, NULL, 0,
-                            REG_SZ, (LPBYTE)szClsidNew, strlen(szClsidNew)+1))
+
+done:
+    if (hkey) RegCloseKey(hkey);
+    return res;
+}
+
+/******************************************************************************
+ *              CoTreatAsClass        [OLE32.46]
+ */
+HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew)
+{
+    HKEY hkey = 0;
+    char buf[200], szClsidNew[200];
+    HRESULT res = S_OK;
+
+    FIXME("(%s,%s)\n", debugstr_guid(clsidOld), debugstr_guid(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 (RegSetValueA(hkey, "AutoTreatAs", REG_SZ, szClsidNew, strlen(szClsidNew)+1))
+    {
         res = REGDB_E_WRITEREGDB;
 	goto done;
     }
 
 done:
-    if (hkeyConvert) RegCloseKey(hkeyConvert);
     if (hkey) RegCloseKey(hkey);
-
     return res;
 }
+
 
 /***********************************************************************
  *           IsEqualGUID [OLE32.76]




More information about the wine-patches mailing list