From: Zhenbo Li Subject: atl90: Add new DLL Message-Id: <52272193.6070500@gmail.com> Date: Wed, 04 Sep 2013 20:03:31 +0800 This patch could fix bug 34431, which is caused by missing atl90.dll --- configure | 1 + configure.ac | 1 + dlls/atl90/Makefile.in | 7 ++++ dlls/atl90/atl90.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++ dlls/atl90/atl90.spec | 52 ++++++++++++++++++++++++++++ include/atlbase.h | 1 + tools/make_specfiles | 1 + 7 files changed, 156 insertions(+) From 97e567b74392a8f4ab21aff900cf625bc8e81ba1 Mon Sep 17 00:00:00 2001 From: Li Zhenbo Date: Wed, 4 Sep 2013 17:23:49 +0800 Subject: atl90: Added new DLL. --- configure | 1 + configure.ac | 1 + dlls/atl90/Makefile.in | 7 ++++ dlls/atl90/atl90.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++ dlls/atl90/atl90.spec | 52 ++++++++++++++++++++++++++++ include/atlbase.h | 1 + tools/make_specfiles | 1 + 7 files changed, 156 insertions(+) create mode 100644 dlls/atl90/Makefile.in create mode 100644 dlls/atl90/atl90.c create mode 100644 dlls/atl90/atl90.spec diff --git a/configure b/configure index 3514c1d..5432cee 100755 --- a/configure +++ b/configure @@ -15916,6 +15916,7 @@ wine_fn_config_test dlls/atl100/tests atl100_test wine_fn_config_dll atl110 enable_atl110 wine_fn_config_dll atl80 enable_atl80 implib wine_fn_config_test dlls/atl80/tests atl80_test +wine_fn_config_dll atl90 enable_atl90 wine_fn_config_dll authz enable_authz wine_fn_config_dll avicap32 enable_avicap32 implib wine_fn_config_dll avifil32 enable_avifil32 implib,po diff --git a/configure.ac b/configure.ac index 8306fe2..be30b2b 100644 --- a/configure.ac +++ b/configure.ac @@ -2598,6 +2598,7 @@ WINE_CONFIG_TEST(dlls/atl100/tests) WINE_CONFIG_DLL(atl110) WINE_CONFIG_DLL(atl80,,[implib]) WINE_CONFIG_TEST(dlls/atl80/tests) +WINE_CONFIG_DLL(atl90) WINE_CONFIG_DLL(authz) WINE_CONFIG_DLL(avicap32,,[implib]) WINE_CONFIG_DLL(avifil32,,[implib,po]) diff --git a/dlls/atl90/Makefile.in b/dlls/atl90/Makefile.in new file mode 100644 index 0000000..92b5d44 --- /dev/null +++ b/dlls/atl90/Makefile.in @@ -0,0 +1,7 @@ +MODULE = atl90.dll +IMPORTS = atl100 oleaut32 user32 ole32 +EXTRADEFS = -D_ATL_VER=_ATL_VER_90 + +C_SRCS = atl90.c + +@MAKE_DLL_RULES@ diff --git a/dlls/atl90/atl90.c b/dlls/atl90/atl90.c new file mode 100644 index 0000000..ce37bc8 --- /dev/null +++ b/dlls/atl90/atl90.c @@ -0,0 +1,93 @@ +/* + * Copyright 2013 Zhenbo Li + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winerror.h" +#include "winuser.h" +#include "atlbase.h" + +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL(atl); + +/*********************************************************************** + * AtlGetVersion [atl90.@] + */ +DWORD WINAPI AtlGetVersion(void *pReserved) +{ + return _ATL_VER; +} + +/********************************************************************** + * AtlAxWin class window procedure + */ +static LRESULT CALLBACK AtlAxWin_wndproc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam ) +{ + if ( wMsg == WM_CREATE ) + { + DWORD len = GetWindowTextLengthW( hWnd ) + 1; + WCHAR *ptr = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + if (!ptr) + return 1; + GetWindowTextW( hWnd, ptr, len ); + AtlAxCreateControlEx( ptr, hWnd, NULL, NULL, NULL, NULL, NULL ); + HeapFree( GetProcessHeap(), 0, ptr ); + return 0; + } + return DefWindowProcW( hWnd, wMsg, wParam, lParam ); +} + +BOOL WINAPI AtlAxWinInit(void) +{ + WNDCLASSEXW wcex; + const WCHAR AtlAxWin90[] = {'A','t','l','A','x','W','i','n','9','0',0}; + const WCHAR AtlAxWinLic90[] = {'A','t','l','A','x','W','i','n','L','i','c','9','0',0}; + + FIXME("semi-stub\n"); + + if ( FAILED( OleInitialize(NULL) ) ) + return FALSE; + + wcex.cbSize = sizeof(wcex); + wcex.style = CS_GLOBALCLASS | CS_DBLCLKS; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = GetModuleHandleW( NULL ); + wcex.hIcon = NULL; + wcex.hCursor = NULL; + wcex.hbrBackground = NULL; + wcex.lpszMenuName = NULL; + wcex.hIconSm = 0; + + wcex.lpfnWndProc = AtlAxWin_wndproc; + wcex.lpszClassName = AtlAxWin90; + if ( !RegisterClassExW( &wcex ) ) + return FALSE; + + wcex.lpszClassName = AtlAxWinLic90; + if ( !RegisterClassExW( &wcex ) ) + return FALSE; + + return TRUE; +} diff --git a/dlls/atl90/atl90.spec b/dlls/atl90/atl90.spec new file mode 100644 index 0000000..aed22bd --- /dev/null +++ b/dlls/atl90/atl90.spec @@ -0,0 +1,52 @@ +10 stdcall AtlAdvise(ptr ptr ptr ptr) atl100.AtlAdvise +11 stdcall AtlUnadvise(ptr ptr long) atl100.AtlUnadvise +12 stdcall AtlFreeMarshalStream(ptr) atl100.AtlFreeMarshalStream +13 stdcall AtlMarshalPtrInProc(ptr ptr ptr) atl100.AtlMarshalPtrInProc +14 stdcall AtlUnmarshalPtr(ptr ptr ptr) atl100.AtlUnmarshalPtr +15 stdcall AtlComModuleGetClassObject(ptr ptr ptr ptr) atl100.AtlComModuleGetClassObject +17 stdcall AtlComModuleRegisterClassObjects(ptr long long) atl100.AtlComModuleRegisterClassObjects +20 stub AtlComModuleRevokeClassObjects +22 stdcall AtlComModuleUnregisterServer(ptr long ptr) atl100.AtlComModuleUnregisterServer +23 stdcall AtlUpdateRegistryFromResourceD(long wstr long ptr ptr) atl100.AtlUpdateRegistryFromResourceD +24 stdcall AtlWaitWithMessageLoop(long) atl100.AtlWaitWithMessageLoop +25 stub AtlSetErrorInfo +26 stdcall AtlCreateTargetDC(long ptr) atl100.AtlCreateTargetDC +27 stdcall AtlHiMetricToPixel(ptr ptr) atl100.AtlHiMetricToPixel +28 stdcall AtlPixelToHiMetric(ptr ptr) atl100.AtlPixelToHiMetric +29 stub AtlDevModeW2A +30 stdcall AtlComPtrAssign(ptr ptr) atl100.AtlComPtrAssign +31 stdcall AtlComQIPtrAssign(ptr ptr ptr) atl100.AtlComQIPtrAssign +32 stdcall AtlInternalQueryInterface(ptr ptr ptr ptr) atl100.AtlInternalQueryInterface +34 stdcall AtlGetVersion(ptr) +35 stdcall AtlAxDialogBoxW(long wstr long ptr long) atl100.AtlAxDialogBoxW +36 stdcall AtlAxDialogBoxA(long str long ptr long) atl100.AtlAxDialogBoxA +37 stdcall AtlAxCreateDialogW(long wstr long ptr long) atl100.AtlAxCreateDialogW +38 stdcall AtlAxCreateDialogA(long str long ptr long) atl100.AtlAxCreateDialogA +39 stdcall AtlAxCreateControl(ptr ptr ptr ptr) atl100.AtlAxCreateControl +40 stdcall AtlAxCreateControlEx(ptr ptr ptr ptr ptr ptr ptr) atl100.AtlAxCreateControlEx +41 stdcall AtlAxAttachControl(ptr ptr ptr) atl100.AtlAxAttachControl +42 stdcall AtlAxWinInit() +43 stdcall AtlWinModuleAddCreateWndData(ptr ptr ptr) atl100.AtlWinModuleAddCreateWndData +44 stdcall AtlWinModuleExtractCreateWndData(ptr) atl100.AtlWinModuleExtractCreateWndData +45 stub AtlWinModuleRegisterWndClassInfoW +46 stub AtlWinModuleRegisterWndClassInfoA +47 stdcall AtlAxGetControl(long ptr) atl100.AtlAxGetControl +48 stdcall AtlAxGetHost(long ptr) atl100.AtlAxGetHost +49 stdcall AtlRegisterClassCategoriesHelper(ptr ptr long) atl100.AtlRegisterClassCategoriesHelper +50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr) atl100.AtlIPersistStreamInit_Load +51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr) atl100.AtlIPersistStreamInit_Save +52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr) atl100.AtlIPersistPropertyBag_Load +53 stub AtlIPersistPropertyBag_Save +54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr) atl100.AtlGetObjectSourceInterface +56 stdcall AtlLoadTypeLib(long wstr ptr ptr) atl100.AtlLoadTypeLib +58 stdcall AtlModuleAddTermFunc(ptr ptr long) atl100.AtlModuleAddTermFunc +59 stub AtlAxCreateControlLic +60 stub AtlAxCreateControlLicEx +61 stdcall AtlCreateRegistrar(ptr) atl100.AtlCreateRegistrar +62 stub AtlWinModuleRegisterClassExW +63 stub AtlWinModuleRegisterClassExA +64 stdcall AtlCallTermFunc(ptr) atl100.AtlCallTermFunc +65 stdcall AtlWinModuleInit(ptr) atl100.AtlWinModuleInit +66 stub AtlWinModuleTerm +67 stdcall AtlSetPerUserRegistration(long) atl100.AtlSetPerUserRegistration +68 stdcall AtlGetPerUserRegistration(ptr) atl100.AtlGetPerUserRegistration diff --git a/include/atlbase.h b/include/atlbase.h index 660fbf5..bcd634e 100644 --- a/include/atlbase.h +++ b/include/atlbase.h @@ -28,6 +28,7 @@ #define _ATL_VER_30 0x0300 #define _ATL_VER_70 0x0700 #define _ATL_VER_80 0x0800 +#define _ATL_VER_90 0x0900 #define _ATL_VER_100 0x0a00 #define _ATL_VER_110 0x0b00 diff --git a/tools/make_specfiles b/tools/make_specfiles index c0de805..59c6930 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -118,6 +118,7 @@ my @dll_groups = "atl110", "atl", "atl80", + "atl90", ], [ "advapi32", -- 1.8.2.1