diff --git a/dlls/oleacc/Makefile.in b/dlls/oleacc/Makefile.in index fda1b75d399..331229f2d4e 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 4d9c55e992b..3cfe7c105ad 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 44b06935367..15eda9c76ec 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 1bbb9f617e6..06e3ba6937f 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 +#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 f27a8dade11..3ed1818ef74 100644 --- a/dlls/oleacc/propservice.c +++ b/dlls/oleacc/propservice.c @@ -20,7 +20,6 @@ #include -#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); }