From 7003bbdfd41b8dd690b41aa1d367927e75ad781f Mon Sep 17 00:00:00 2001 From: Zhenbo Li Date: Sat, 12 Oct 2013 12:11:58 +0800 Subject: [PATCH] atl90: Added new dll. --- configure | 2 ++ configure.ac | 1 + dlls/atl90/Makefile.in | 7 ++++ dlls/atl90/atl90.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++ dlls/atl90/atl90.spec | 52 ++++++++++++++++++++++++++++ include/atlbase.h | 1 + tools/make_specfiles | 1 + 7 files changed, 158 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 bfde1af9b33..b523d828090 100755 --- a/configure +++ b/configure @@ -881,6 +881,7 @@ enable_atl enable_atl100 enable_atl110 enable_atl80 +enable_atl90 enable_authz enable_avicap32 enable_avifil32 @@ -16679,6 +16680,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 clean,implib,po diff --git a/configure.ac b/configure.ac index a2e1874b6d6..4f6e2631170 100644 --- a/configure.ac +++ b/configure.ac @@ -2716,6 +2716,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,,[clean,implib,po]) diff --git a/dlls/atl90/Makefile.in b/dlls/atl90/Makefile.in new file mode 100644 index 00000000000..92b5d445256 --- /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 00000000000..1b46dcb06b8 --- /dev/null +++ b/dlls/atl90/atl90.c @@ -0,0 +1,94 @@ +/* + * 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 *reserved) +{ + return _ATL_VER; +} + +/********************************************************************** + * AtlAxWin class window procedure + */ +static LRESULT CALLBACK AtlAxWin_wndproc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) +{ + if ( msg == 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, msg, 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 00000000000..aed22bd9e14 --- /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 660fbf54cd5..bcd634e7d9a 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 5314c414e7a..dbfa5e38db5 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -123,6 +123,7 @@ my @dll_groups = "atl110", "atl", "atl80", + "atl90", ], [ "advapi32", -- 2.11.4.GIT