diff options
Diffstat (limited to 'dbaccess/win32/source/odbcconfig')
-rw-r--r-- | dbaccess/win32/source/odbcconfig/makefile.mk | 54 | ||||
-rw-r--r-- | dbaccess/win32/source/odbcconfig/odbcconfig.cxx | 161 |
2 files changed, 215 insertions, 0 deletions
diff --git a/dbaccess/win32/source/odbcconfig/makefile.mk b/dbaccess/win32/source/odbcconfig/makefile.mk new file mode 100644 index 000000000000..72d81e39541f --- /dev/null +++ b/dbaccess/win32/source/odbcconfig/makefile.mk @@ -0,0 +1,54 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org 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 version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +PRJ=..$/..$/.. + +PRJNAME=dbaccess +TARGET=odbcconfig +LIBTARGET=NO +TARGETTYPE=GUI + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk + +# --- Files -------------------------------------------------------- + +OBJFILES= \ + $(OBJ)$/odbcconfig.obj + +# SQLManageDataSources wrapper +APP1TARGET=$(TARGET) +APP1NOSAL=TRUE +APP1OBJS = \ + $(OBJ)$/odbcconfig.obj + +# --- Targets ------------------------------------------------------ + + +.INCLUDE : target.mk + diff --git a/dbaccess/win32/source/odbcconfig/odbcconfig.cxx b/dbaccess/win32/source/odbcconfig/odbcconfig.cxx new file mode 100644 index 000000000000..64360c2a72b0 --- /dev/null +++ b/dbaccess/win32/source/odbcconfig/odbcconfig.cxx @@ -0,0 +1,161 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_dbaccess.hxx" + +#ifndef __cplusplus +#error Need C++ to compile +#endif + +#define UNICODE +#define _UNICODE +#include <tchar.h> + +#ifdef _MSC_VER +#pragma warning(push, 1) +#pragma warning(disable:4005) +#endif + +#include <windows.h> +#include <shellapi.h> +#include <sqlext.h> + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +// the name of the library which contains the SQLManageDataSources function +#define ODBC_UI_LIB_NAME L"ODBCCP32.DLL" + +// the signature of the SQLManageDataSources function +typedef SQLRETURN (SQL_API* TSQLManageDataSource) (SQLHWND hwndParent); + +// displays the error text for the last error (GetLastError), and returns this error value +int displayLastError() +{ + DWORD dwError = GetLastError(); + + LPVOID lpMsgBuf; + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + dwError, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR)&lpMsgBuf, + 0, + NULL + ); + + // Display the string. + MessageBox( NULL, (LPCTSTR)lpMsgBuf, NULL, MB_OK | MB_ICONERROR ); + + // Free the buffer. + LocalFree( lpMsgBuf ); + + return dwError; +} + +/** registers the window class for our application's main window +*/ +BOOL registerWindowClass( HINSTANCE _hAppInstance ) +{ + WNDCLASSEX wcx; + + wcx.cbSize = sizeof(wcx); // size of structure + wcx.style = CS_HREDRAW | CS_VREDRAW; // redraw if size changes + wcx.lpfnWndProc = DefWindowProc; // points to window procedure + wcx.cbClsExtra = 0; // no extra class memory + wcx.cbWndExtra = 0; // no extra window memory + wcx.hInstance = _hAppInstance; // handle to instance + wcx.hIcon = NULL; // predefined app. icon + wcx.hCursor = NULL; // predefined arrow + wcx.hbrBackground = NULL; // no background brush + wcx.lpszMenuName = NULL; // name of menu resource + wcx.lpszClassName = L"ODBCConfigMainClass"; // name of window class + wcx.hIconSm = NULL; // small class icon + + return ( NULL != RegisterClassEx( &wcx ) ); +} + +/// initializes the application instances +HWND initInstance( HINSTANCE _hAppInstance ) +{ + HWND hWindow = CreateWindow( + L"ODBCConfigMainClass", // name of window class + L"ODBC Config Wrapper", // title-bar string + WS_OVERLAPPEDWINDOW, // top-level window + CW_USEDEFAULT, // default horizontal position + CW_USEDEFAULT, // default vertical position + CW_USEDEFAULT, // default width + CW_USEDEFAULT, // default height + (HWND) NULL, // no owner window + (HMENU) NULL, // use class menu + _hAppInstance, // handle to application instance + (LPVOID) NULL); // no window-creation data + + // don't show the window, we only need it as parent handle for the + // SQLManageDataSources function + return hWindow; +} + +// main window function +#ifdef __MINGW32__ +extern "C" int APIENTRY WinMain( HINSTANCE _hAppInstance, HINSTANCE, LPSTR, int ) +#else +extern "C" int APIENTRY _tWinMain( HINSTANCE _hAppInstance, HINSTANCE, LPTSTR, int ) +#endif +{ + if ( !registerWindowClass( _hAppInstance ) ) + return FALSE; + + HWND hAppWindow = initInstance( _hAppInstance ); + if ( !IsWindow( hAppWindow ) ) + return displayLastError(); + + HMODULE hModule = LoadLibraryW( ODBC_UI_LIB_NAME ); + if ( hModule == NULL ) + hModule = LoadLibraryExW( ODBC_UI_LIB_NAME, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); + if ( hModule == NULL ) + return displayLastError(); + + FARPROC pManageDSProc = GetProcAddress( hModule, "SQLManageDataSources" ); + if ( pManageDSProc == NULL ) + return displayLastError(); + + TSQLManageDataSource pManageDS = (TSQLManageDataSource)pManageDSProc; + if ( !( (*pManageDS)( hAppWindow ) ) ) + return displayLastError(); + + FreeLibrary( hModule ); + + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |