Andrey Turkin : atl: Implement AtlRegisterLoadTypeLib.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Nov 13 09:24:32 CST 2006


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

Author: Andrey Turkin <pancha at mail.nnov.ru>
Date:   Sat Nov 11 00:07:29 2006 +0300

atl: Implement AtlRegisterLoadTypeLib.

---

 dlls/atl/atl_main.c |   21 +++++++++++++++++++--
 dlls/atl/atlbase.h  |    1 +
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/dlls/atl/atl_main.c b/dlls/atl/atl_main.c
index 1fac5b1..7195f13 100644
--- a/dlls/atl/atl_main.c
+++ b/dlls/atl/atl_main.c
@@ -341,8 +341,25 @@ HRESULT WINAPI AtlModuleGetClassObject(_
  */
 HRESULT WINAPI AtlModuleRegisterTypeLib(_ATL_MODULEW *pm, LPCOLESTR lpszIndex)
 {
-    FIXME("%p %s\n", pm, debugstr_w(lpszIndex));
-    return E_FAIL;
+    HRESULT hRes;
+    BSTR path;
+    ITypeLib *typelib;
+
+    TRACE("%p %s\n", pm, debugstr_w(lpszIndex));
+
+    if (!pm)
+        return E_INVALIDARG;
+
+    hRes = AtlModuleLoadTypeLib(pm, lpszIndex, &path, &typelib);
+
+    if (SUCCEEDED(hRes))
+    {
+        hRes = RegisterTypeLib(typelib, path, NULL); /* FIXME: pass help directory */
+        ITypeLib_Release(typelib);
+        SysFreeString(path);
+    }
+
+    return hRes;
 }
 
 /***********************************************************************
diff --git a/dlls/atl/atlbase.h b/dlls/atl/atlbase.h
index 809a89f..0aec2e9 100644
--- a/dlls/atl/atlbase.h
+++ b/dlls/atl/atlbase.h
@@ -154,6 +154,7 @@ LPVOID  WINAPI AtlModuleExtractCreateWnd
 HRESULT WINAPI AtlModuleInit(_ATL_MODULEW* pM, _ATL_OBJMAP_ENTRYW* p, HINSTANCE h);
 HRESULT WINAPI AtlModuleRegisterClassObjects(_ATL_MODULEW* pM, DWORD dwClsContext, DWORD dwFlags);
 HRESULT WINAPI AtlModuleRegisterServer(_ATL_MODULEW* pM, BOOL bRegTypeLib, const CLSID* pCLSID);
+HRESULT WINAPI AtlModuleRegisterTypeLib(_ATL_MODULEW *pM, LPCOLESTR lpszIndex);
 HRESULT WINAPI AtlModuleUnregisterServer(_ATL_MODULEW* pM, const CLSID* pCLSID);
 HRESULT WINAPI AtlModuleUpdateRegistryFromResourceD(_ATL_MODULEW *pM, LPCOLESTR lpszRes, BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries, IRegistrar *pReg );
 HRESULT WINAPI AtlModuleUnregisterServerEx(_ATL_MODULEW* pM, BOOL bUnRegTypeLib, const CLSID* pCLSID);




More information about the wine-cvs mailing list