From: Jacek Caban Subject: [PATCH 2/3] atl80: Added AtlRegisterTypeLib implementation (based on AtlModuleRegisterTypeLib) Message-Id: <50DD9D4F.1000407@codeweavers.com> Date: Fri, 28 Dec 2012 14:23:27 +0100 --- dlls/atl80/Makefile.in | 1 + dlls/atl80/atl80.c | 31 ++++++++++++++++++++++++++++--- dlls/atl80/atl80.spec | 2 +- include/atlbase.h | 1 + 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/dlls/atl80/Makefile.in b/dlls/atl80/Makefile.in index 70f416f..1b83f5f 100644 --- a/dlls/atl80/Makefile.in +++ b/dlls/atl80/Makefile.in @@ -1,4 +1,5 @@ MODULE = atl80.dll +IMPORTS = atl100 oleaut32 EXTRADEFS = -D_ATL_VER=_ATL_VER_80 diff --git a/dlls/atl80/atl80.c b/dlls/atl80/atl80.c index b250d32..c85f75e 100644 --- a/dlls/atl80/atl80.c +++ b/dlls/atl80/atl80.c @@ -16,11 +16,36 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include -#include "windef.h" -#include "winbase.h" +#define COBJMACROS + #include "atlbase.h" +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL(atl); + +/*********************************************************************** + * AtlRegisterTypeLib [atl80.19] + */ +HRESULT WINAPI AtlRegisterTypeLib(HINSTANCE inst, const WCHAR *index) +{ + ITypeLib *typelib; + BSTR path; + HRESULT hres; + + TRACE("(%p %s)\n", inst, debugstr_w(index)); + + hres = AtlLoadTypeLib(inst, index, &path, &typelib); + if(FAILED(hres)) + return hres; + + hres = RegisterTypeLib(typelib, path, NULL); /* FIXME: pass help directory */ + ITypeLib_Release(typelib); + SysFreeString(path); + return hres; +} + /*********************************************************************** * AtlGetVersion [atl80.@] */ diff --git a/dlls/atl80/atl80.spec b/dlls/atl80/atl80.spec index c6e589e..e4d73f1 100644 --- a/dlls/atl80/atl80.spec +++ b/dlls/atl80/atl80.spec @@ -6,7 +6,7 @@ 15 stdcall AtlComModuleGetClassObject(ptr ptr ptr ptr) atl100.AtlComModuleGetClassObject 17 stub AtlComModuleRegisterClassObjects 18 stub AtlComModuleRegisterServer(ptr long ptr) -19 stub AtlRegisterTypeLib(ptr wstr) +19 stdcall AtlRegisterTypeLib(ptr wstr) 20 stub AtlComModuleRevokeClassObjects 22 stub AtlComModuleUnregisterServer 23 stdcall AtlUpdateRegistryFromResourceD(long wstr long ptr ptr) atl100.AtlUpdateRegistryFromResourceD diff --git a/include/atlbase.h b/include/atlbase.h index ee8167c..39c3741 100644 --- a/include/atlbase.h +++ b/include/atlbase.h @@ -252,6 +252,7 @@ HRESULT WINAPI AtlUnmarshalPtr(IStream *pStream, const IID *iid, IUnknown **ppUn HRESULT WINAPI AtlCreateRegistrar(IRegistrar**); HRESULT WINAPI AtlUpdateRegistryFromResourceD(HINSTANCE,LPCOLESTR,BOOL,struct _ATL_REGMAP_ENTRY*,IRegistrar*); HRESULT WINAPI AtlLoadTypeLib(HINSTANCE,LPCOLESTR,BSTR*,ITypeLib**); +HRESULT WINAPI AtlRegisterTypeLib(HINSTANCE,LPCOLESTR); HRESULT WINAPI AtlRegisterClassCategoriesHelper(REFCLSID,const struct _ATL_CATMAP_ENTRY*,BOOL); HRESULT WINAPI AtlComModuleGetClassObject(_ATL_COM_MODULE*,REFCLSID,REFIID,void**);