From: Jacek Caban Subject: [PATCH try2] atl100: Added new DLL. Message-Id: <5225AB42.1070905@codeweavers.com> Date: Tue, 03 Sep 2013 11:26:26 +0200 --- dlls/atl110/Makefile.in | 7 ++++ dlls/atl110/atl110.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++ dlls/atl110/atl110.spec | 52 +++++++++++++++++++++++++++ include/atlbase.h | 1 + tools/make_specfiles | 1 + 5 files changed, 155 insertions(+) create mode 100644 dlls/atl110/Makefile.in create mode 100644 dlls/atl110/atl110.c create mode 100644 dlls/atl110/atl110.spec diff --git a/dlls/atl110/Makefile.in b/dlls/atl110/Makefile.in new file mode 100644 index 0000000..f9d98d3 --- /dev/null +++ b/dlls/atl110/Makefile.in @@ -0,0 +1,7 @@ +MODULE = atl110.dll +IMPORTS = atl100 ole32 user32 +EXTRADEFS = -D_ATL_VER=_ATL_VER_110 + +C_SRCS = atl110.c + +@MAKE_DLL_RULES@ diff --git a/dlls/atl110/atl110.c b/dlls/atl110/atl110.c new file mode 100644 index 0000000..f704bd9 --- /dev/null +++ b/dlls/atl110/atl110.c @@ -0,0 +1,94 @@ +/* + * Copyright 2013 Jacek Caban for CodeWeavers + * + * 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 [atl110.@] + */ +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 AtlAxWin110[] = {'A','t','l','A','x','W','i','n','1','1','0',0}; + const WCHAR AtlAxWinLic110[] = {'A','t','l','A','x','W','i','n','L','i','c','1','1','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 = AtlAxWin110; + if ( !RegisterClassExW( &wcex ) ) + return FALSE; + + wcex.lpszClassName = AtlAxWinLic110; + if ( !RegisterClassExW( &wcex ) ) + return FALSE; + + return TRUE; +} diff --git a/dlls/atl110/atl110.spec b/dlls/atl110/atl110.spec new file mode 100644 index 0000000..74ee84e --- /dev/null +++ b/dlls/atl110/atl110.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() atl100.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 1f91f55..660fbf5 100644 --- a/include/atlbase.h +++ b/include/atlbase.h @@ -29,6 +29,7 @@ #define _ATL_VER_70 0x0700 #define _ATL_VER_80 0x0800 #define _ATL_VER_100 0x0a00 +#define _ATL_VER_110 0x0b00 #ifndef _ATL_VER #define _ATL_VER _ATL_VER_100 diff --git a/tools/make_specfiles b/tools/make_specfiles index 1a57692..c0de805 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -115,6 +115,7 @@ my @dll_groups = ], [ "atl100", + "atl110", "atl", "atl80", ],