From 3c1a88d8b8518eda184be388723f46cfd54c3ac6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 24 Jan 2000 20:19:39 +0000 Subject: [PATCH 1/1] several mingw32 compilation fixes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dynlib.h | 52 +++++++++++++++++++++-------------------- src/common/resource.cpp | 1 - src/msw/bitmap.cpp | 5 ++++ src/msw/dcprint.cpp | 7 ++++++ src/msw/dde.cpp | 18 ++++++++++++++ src/msw/imaglist.cpp | 11 +++++---- src/msw/listctrl.cpp | 1 + src/msw/spinbutt.cpp | 1 + 8 files changed, 66 insertions(+), 30 deletions(-) diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h index 5f5a9f4f01..2ba2c3f4b6 100644 --- a/include/wx/dynlib.h +++ b/include/wx/dynlib.h @@ -40,7 +40,7 @@ # include typedef shl_t wxDllType; #elif defined(__WINDOWS__) -//# include +# include // needed to get HMODULE typedef HMODULE wxDllType; #elif defined(__OS2__) # define INCL_DOS @@ -61,6 +61,7 @@ // ---------------------------------------------------------------------------- // wxDllLoader // ---------------------------------------------------------------------------- + /** wxDllLoader is a class providing an interface similar to unix's dlopen(). It is used by the wxLibrary framework and manages the actual loading of DLLs and the resolving of symbols in them. @@ -69,30 +70,31 @@ */ class wxDllLoader { - public: - /** This function loads a shared library into memory, with libname - being the basename of the library, without the filename - extension. No initialisation of the library will be done. - @param libname Name of the shared object to load. - @param success Must point to a bool variable which will be set to TRUE or FALSE. - @return A handle to the loaded DLL. Use success parameter to test if it is valid. - */ - static wxDllType LoadLibrary(const wxString & libname, bool *success = NULL); - /** This function unloads the shared library. */ - static void UnloadLibrary(wxDllType dll); - /** This function returns a valid handle for the main program - itself. */ - static wxDllType GetProgramHandle(void); - /** This function resolves a symbol in a loaded DLL, such as a - variable or function name. - @param dllHandle Handle of the DLL, as returned by LoadDll(). - @param name Name of the symbol. - @return A pointer to the symbol. - */ - static void * GetSymbol(wxDllType dllHandle, const wxString &name); - private: - /// forbid construction of objects - wxDllLoader(); +public: + /** This function loads a shared library into memory, with libname + being the basename of the library, without the filename + extension. No initialisation of the library will be done. + @param libname Name of the shared object to load. + @param success Must point to a bool variable which will be set to TRUE or FALSE. + @return A handle to the loaded DLL. Use success parameter to test if it is valid. + */ + static wxDllType LoadLibrary(const wxString & libname, bool *success = NULL); + /** This function unloads the shared library. */ + static void UnloadLibrary(wxDllType dll); + /** This function returns a valid handle for the main program + itself. */ + static wxDllType GetProgramHandle(void); + /** This function resolves a symbol in a loaded DLL, such as a + variable or function name. + @param dllHandle Handle of the DLL, as returned by LoadDll(). + @param name Name of the symbol. + @return A pointer to the symbol. + */ + static void * GetSymbol(wxDllType dllHandle, const wxString &name); + +private: + /// forbid construction of objects + wxDllLoader(); }; // ---------------------------------------------------------------------------- diff --git a/src/common/resource.cpp b/src/common/resource.cpp index b0945819f7..98b983adf0 100644 --- a/src/common/resource.cpp +++ b/src/common/resource.cpp @@ -544,7 +544,6 @@ wxControl *wxResourceTable::CreateItem(wxWindow *parent, const wxItemResource* c // Force the layout algorithm since the size changes the layout if (control->IsKindOf(CLASSINFO(wxRadioBox))) { - wxSize sz = control->GetSize(); control->SetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT); } #endif diff --git a/src/msw/bitmap.cpp b/src/msw/bitmap.cpp index 015b00e732..3cf541d3c7 100644 --- a/src/msw/bitmap.cpp +++ b/src/msw/bitmap.cpp @@ -46,6 +46,11 @@ #include "wx/msw/dib.h" #include "wx/image.h" +// missing from mingw32 header +#ifndef CLR_INVALID + #define CLR_INVALID ((COLORREF)-1) +#endif // no CLR_INVALID + // ---------------------------------------------------------------------------- // macros // ---------------------------------------------------------------------------- diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index b49d678fb8..1fabf5e6df 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -47,9 +47,16 @@ #include #endif +// mingw32 defines GDI_ERROR incorrectly +#ifdef __GNUWIN32__ + #undef GDI_ERROR + #define GDI_ERROR ((int)-1) +#endif + // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- + IMPLEMENT_CLASS(wxPrinterDC, wxDC) // ============================================================================ diff --git a/src/msw/dde.cpp b/src/msw/dde.cpp index 6968b94312..73fa7d6955 100644 --- a/src/msw/dde.cpp +++ b/src/msw/dde.cpp @@ -50,6 +50,24 @@ #include "wx/msw/gnuwin32/extra.h" #endif +// some compilers headers don't define this one (mingw32) +#ifndef DMLERR_NO_ERROR + #define DMLERR_NO_ERROR (0) + + // this one is also missing from some mingw32 headers, but there is no way + // to test for it (I know of) - the test for DMLERR_NO_ERROR works for me, + // but is surely not the right thing to do + extern "C" + HDDEDATA STDCALL DdeClientTransaction(LPBYTE pData, + DWORD cbData, + HCONV hConv, + HSZ hszItem, + UINT wFmt, + UINT wType, + DWORD dwTimeout, + LPDWORD pdwResult); +#endif // no DMLERR_NO_ERROR + // ---------------------------------------------------------------------------- // macros and constants // ---------------------------------------------------------------------------- diff --git a/src/msw/imaglist.cpp b/src/msw/imaglist.cpp index 4cd16e46c2..89ff4b11ec 100644 --- a/src/msw/imaglist.cpp +++ b/src/msw/imaglist.cpp @@ -232,13 +232,16 @@ bool wxImageList::Remove(int index) // Remove all images bool wxImageList::RemoveAll() { - bool ok = ImageList_RemoveAll(GetHImageList()) != 0; - if ( !ok ) + // don't use ImageList_RemoveAll() because mingw32 headers don't have it + int count = ImageList_GetImageCount(GetHImageList()); + for ( int i = 0; i < count; i++ ) { - wxLogLastError("ImageList_RemoveAll()"); + // the image indexes are shifted, so we should always remove the first + // one + (void)Remove(0); } - return ok; + return TRUE; } // Draws the given image on a dc at the specified position. diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 34649103cc..09a988cd15 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -19,6 +19,7 @@ #ifdef __GNUG__ #pragma implementation "listctrl.h" + #pragma implementation "listctrlbase.h" #endif // For compilers that support precompilation, includes "wx.h". diff --git a/src/msw/spinbutt.cpp b/src/msw/spinbutt.cpp index cbd779d665..5159b21ceb 100644 --- a/src/msw/spinbutt.cpp +++ b/src/msw/spinbutt.cpp @@ -19,6 +19,7 @@ #ifdef __GNUG__ #pragma implementation "spinbutt.h" + #pragma implementation "spinbutbase.h" #endif // For compilers that support precompilation, includes "wx.h". -- 2.45.2