Nikolay Sivov : oleacc: Added proxies for oleacc.idl.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 5 09:50:51 CDT 2015


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue May  5 12:17:44 2015 +0300

oleacc: Added proxies for oleacc.idl.

---

 dlls/oleacc/Makefile.in        |  4 +++-
 dlls/oleacc/main.c             | 30 +++++++++++++++++++++++++-----
 dlls/oleacc/oleacc_classes.idl |  8 ++++++++
 dlls/oleacc/oleacc_private.h   |  3 ++-
 dlls/oleacc/propservice.c      | 11 ++---------
 5 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/dlls/oleacc/Makefile.in b/dlls/oleacc/Makefile.in
index fda1b75..331229f 100644
--- a/dlls/oleacc/Makefile.in
+++ b/dlls/oleacc/Makefile.in
@@ -1,6 +1,6 @@
 MODULE    = oleacc.dll
 IMPORTLIB = oleacc
-IMPORTS   = uuid oleaut32 ole32 user32
+IMPORTS   = uuid oleaut32 ole32 user32 rpcrt4
 
 C_SRCS = \
 	client.c \
@@ -11,3 +11,5 @@ C_SRCS = \
 IDL_SRCS = oleacc_classes.idl
 
 RC_SRCS = oleacc.rc
+
+dlldata_EXTRADEFS = -DENTRY_PREFIX=OLEACC_ -DPROXY_DELEGATION -DWINE_REGISTER_DLL
diff --git a/dlls/oleacc/main.c b/dlls/oleacc/main.c
index 4d9c55e..3cfe7c1 100644
--- a/dlls/oleacc/main.c
+++ b/dlls/oleacc/main.c
@@ -49,6 +49,11 @@ static const WCHAR richedit20wW[] = {'R','i','c','h','E','d','i','t','2','0','W'
 
 typedef HRESULT (WINAPI *accessible_create)(HWND, const IID*, void**);
 
+extern HRESULT WINAPI OLEACC_DllGetClassObject(REFCLSID, REFIID, void**) DECLSPEC_HIDDEN;
+extern BOOL WINAPI OLEACC_DllMain(HINSTANCE, DWORD, void*) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI OLEACC_DllRegisterServer(void) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI OLEACC_DllUnregisterServer(void) DECLSPEC_HIDDEN;
+
 static struct {
     const WCHAR *name;
     DWORD idx;
@@ -406,19 +411,34 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
             DisableThreadLibraryCalls(hinstDLL);
             break;
     }
-    return TRUE;
+
+    return OLEACC_DllMain(hinstDLL, fdwReason, lpvReserved);
 }
 
 HRESULT WINAPI DllRegisterServer(void)
 {
-    TRACE("()\n");
-    return __wine_register_resources(oleacc_handle);
+    return OLEACC_DllRegisterServer();
 }
 
 HRESULT WINAPI DllUnregisterServer(void)
 {
-    TRACE("()\n");
-    return __wine_unregister_resources(oleacc_handle);
+    return OLEACC_DllUnregisterServer();
+}
+
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, void **ppv)
+{
+    if(IsEqualGUID(&CLSID_CAccPropServices, rclsid)) {
+        TRACE("(CLSID_CAccPropServices %s %p)\n", debugstr_guid(iid), ppv);
+        return get_accpropservices_factory(iid, ppv);
+    }
+
+    if(IsEqualGUID(&CLSID_PSFactoryBuffer, rclsid)) {
+        TRACE("(CLSID_PSFactoryBuffer %s %p)\n", debugstr_guid(iid), ppv);
+        return OLEACC_DllGetClassObject(rclsid, iid, ppv);
+    }
+
+    FIXME("%s %s %p: stub\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
+    return E_NOTIMPL;
 }
 
 void WINAPI GetOleaccVersionInfo(DWORD* pVersion, DWORD* pBuild)
diff --git a/dlls/oleacc/oleacc_classes.idl b/dlls/oleacc/oleacc_classes.idl
index 44b0693..15eda9c 100644
--- a/dlls/oleacc/oleacc_classes.idl
+++ b/dlls/oleacc/oleacc_classes.idl
@@ -17,5 +17,13 @@
  */
 
 #pragma makedep regtypelib
+#pragma makedep proxy
+#pragma makedep register
 
 #include "oleacc.idl"
+
+[
+    threading(both),
+    uuid(03022430-abc4-11d0-bde2-00aa001a1953)  /* IAccessibleHandler */
+]
+coclass PSFactoryBuffer { interface IFactoryBuffer; }
diff --git a/dlls/oleacc/oleacc_private.h b/dlls/oleacc/oleacc_private.h
index 1bbb9f6..06e3ba6 100644
--- a/dlls/oleacc/oleacc_private.h
+++ b/dlls/oleacc/oleacc_private.h
@@ -16,10 +16,11 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include <oleacc.h>
+#include "oleacc_classes.h"
 
 HRESULT create_client_object(HWND, const IID*, void**) DECLSPEC_HIDDEN;
 HRESULT create_window_object(HWND, const IID*, void**) DECLSPEC_HIDDEN;
+HRESULT get_accpropservices_factory(REFIID, void**) DECLSPEC_HIDDEN;
 
 int convert_child_id(VARIANT *v) DECLSPEC_HIDDEN;
 
diff --git a/dlls/oleacc/propservice.c b/dlls/oleacc/propservice.c
index f27a8da..3ed1818 100644
--- a/dlls/oleacc/propservice.c
+++ b/dlls/oleacc/propservice.c
@@ -20,7 +20,6 @@
 
 #include <stdarg.h>
 
-#include "oleacc.h"
 #include "oleacc_private.h"
 
 #include "wine/debug.h"
@@ -245,13 +244,7 @@ static const IClassFactoryVtbl CAccPropServicesFactoryVtbl = {
 
 static IClassFactory CAccPropServicesFactory = { &CAccPropServicesFactoryVtbl };
 
-HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, void **ppv)
+HRESULT get_accpropservices_factory(REFIID riid, void **ppv)
 {
-    if(IsEqualGUID(&CLSID_CAccPropServices, rclsid)) {
-        TRACE("(CLSID_CAccPropServices %s %p)\n", debugstr_guid(iid), ppv);
-        return IClassFactory_QueryInterface(&CAccPropServicesFactory, iid, ppv);
-    }
-
-    FIXME("%s %s %p: stub\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
-    return E_NOTIMPL;
+    return IClassFactory_QueryInterface(&CAccPropServicesFactory, riid, ppv);
 }




More information about the wine-cvs mailing list