From 6dad7fff043b4de3dc6b584c68281588d10191b2 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 26 Oct 2006 19:06:51 +0000 Subject: [PATCH] move wxMSLU_xxx redefinitions of xxx() Windows functions to wx/msw/wrapwin.h as we have to define them after including and not before; also moved the rest of the wxMSLU redefinitions to wx/filefn.h where they're used as it doesn't make sense to keep only them in wx/msw/mslu.h git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/filefn.h | 19 +++++++++++++- include/wx/msw/mslu.h | 57 +++------------------------------------- include/wx/msw/wrapwin.h | 27 ++++++++++++++++++- src/msw/mslu.cpp | 6 ++--- 4 files changed, 50 insertions(+), 59 deletions(-) diff --git a/include/wx/filefn.h b/include/wx/filefn.h index eca68ca64b..7573a31f62 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -239,7 +239,24 @@ enum wxFileKind #if wxUSE_UNICODE #if wxUSE_UNICODE_MSLU - #include "wx/msw/mslu.h" + // implement the missing file functions in Win9x ourselves + #if defined( __VISUALC__ ) \ + || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ + || ( defined(__MWERKS__) && defined(__WXMSW__) ) \ + || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) \ + || defined(__DMC__) + #ifdef __BORLANDC__ + // BCC has _stati64() function but struct stati64 + #define _stati64 stati64 + #endif // __BORLANDC__ + + WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, int flags, int mode); + WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, int mode); + WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name); + WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name); + WXDLLIMPEXP_BASE int wxMSLU__wstat(const wxChar *name, struct _stat *buffer); + WXDLLIMPEXP_BASE int wxMSLU__wstati64(const wxChar *name, struct _stati64 *buffer); + #endif // Windows compilers with MSLU support #define wxOpen wxMSLU__wopen diff --git a/include/wx/msw/mslu.h b/include/wx/msw/mslu.h index 7bb088c926..5bf78e82c0 100644 --- a/include/wx/msw/mslu.h +++ b/include/wx/msw/mslu.h @@ -1,8 +1,9 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/msw/mslu.h -// Purpose: Fixes for bugs in MSLU +// Purpose: MSLU-related declarations // Author: Vaclav Slavik -// Modified by: +// Modified by: Vadim Zeitlin to move out various functions to other files +// to fix header inter-dependencies // Created: 2002/02/17 // RCS-ID: $Id$ // Copyright: (c) 2002 Vaclav Slavik @@ -13,62 +14,10 @@ #define _WX_MSLU_H_ #include "wx/defs.h" -#include "wx/utils.h" -#include "wx/wxchar.h" // Returns true if we are running under Unicode emulation in Win9x environment. // Workaround hacks take effect only if this condition is met // (NB: this function is needed even if !wxUSE_UNICODE_MSLU) WXDLLIMPEXP_BASE bool wxUsingUnicowsDll(); -//------------------------------------------------------------------------ -// Wrongly implemented functions from unicows.dll -//------------------------------------------------------------------------ - -#if wxUSE_UNICODE_MSLU - -#if wxUSE_GUI - -WXDLLEXPORT int wxMSLU_DrawStateW(WXHDC dc, WXHBRUSH br, WXFARPROC outputFunc, - WXLPARAM lData, WXWPARAM wData, - int x, int y, int cx, int cy, - unsigned int flags); -#define DrawStateW(dc, br, func, ld, wd, x, y, cx, cy, flags) \ - wxMSLU_DrawStateW((WXHDC)dc,(WXHBRUSH)br,(WXFARPROC)func, \ - ld, wd, x, y, cx, cy, flags) - -WXDLLEXPORT int wxMSLU_GetOpenFileNameW(void *ofn); -#define GetOpenFileNameW(ofn) wxMSLU_GetOpenFileNameW((void*)ofn) - -WXDLLEXPORT int wxMSLU_GetSaveFileNameW(void *ofn); -#define GetSaveFileNameW(ofn) wxMSLU_GetSaveFileNameW((void*)ofn) - -#endif // wxUSE_GUI - -//------------------------------------------------------------------------ -// Missing libc file manipulation functions in Win9x -//------------------------------------------------------------------------ - -#if defined( __VISUALC__ ) \ - || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ - || ( defined(__MWERKS__) && defined(__WXMSW__) ) \ - || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) \ - || defined(__DMC__) - -#ifdef __BORLANDC__ - // BCC has _stati64() function but struct stati64 - #define _stati64 stati64 -#endif - -WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, int flags, int mode); -WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, int mode); -WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name); -WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name); -WXDLLIMPEXP_BASE int wxMSLU__wstat(const wxChar *name, struct _stat *buffer); -WXDLLIMPEXP_BASE int wxMSLU__wstati64(const wxChar *name, struct _stati64 *buffer); - -#endif // Windows compilers with MSLU support - -#endif // wxUSE_UNICODE_MSLU - #endif // _WX_MSLU_H_ diff --git a/include/wx/msw/wrapwin.h b/include/wx/msw/wrapwin.h index 1e039d424d..ef3f4505a6 100644 --- a/include/wx/msw/wrapwin.h +++ b/include/wx/msw/wrapwin.h @@ -57,7 +57,6 @@ // #undef the macros defined in winsows.h which conflict with code elsewhere #include "wx/msw/winundef.h" - // Types DWORD_PTR, ULONG_PTR and so on are used for 64-bit compatability // in the WINAPI SDK (they are an integral type that is the size of a // pointer) on MSVC 7 and later. However, they are not available in older @@ -70,5 +69,31 @@ #define DWORD_PTR unsigned long #endif // !defined(_MSC_VER) || _MSC_VER < 1300 +// ---------------------------------------------------------------------------- +// Fix the functions wrongly implemented in unicows.dll +// ---------------------------------------------------------------------------- + +#if wxUSE_UNICODE_MSLU + +#if wxUSE_GUI + +WXDLLEXPORT int wxMSLU_DrawStateW(WXHDC dc, WXHBRUSH br, WXFARPROC outputFunc, + WXLPARAM lData, WXWPARAM wData, + int x, int y, int cx, int cy, + unsigned int flags); +#define DrawStateW(dc, br, func, ld, wd, x, y, cx, cy, flags) \ + wxMSLU_DrawStateW((WXHDC)dc,(WXHBRUSH)br,(WXFARPROC)func, \ + ld, wd, x, y, cx, cy, flags) + +WXDLLEXPORT int wxMSLU_GetOpenFileNameW(void *ofn); +#define GetOpenFileNameW(ofn) wxMSLU_GetOpenFileNameW((void*)ofn) + +WXDLLEXPORT int wxMSLU_GetSaveFileNameW(void *ofn); +#define GetSaveFileNameW(ofn) wxMSLU_GetSaveFileNameW((void*)ofn) + +#endif // wxUSE_GUI + +#endif // wxUSE_UNICODE_MSLU + #endif // _WX_WRAPWIN_H_ diff --git a/src/msw/mslu.cpp b/src/msw/mslu.cpp index df0b4634ee..064b8744dc 100644 --- a/src/msw/mslu.cpp +++ b/src/msw/mslu.cpp @@ -65,7 +65,7 @@ bool WXDLLIMPEXP_BASE wxUsingUnicowsDll() #include #endif -// Undef redirection macros defined in wx/msw/mslu.h: +// Undef redirection macros defined in wx/msw/wrapwin.h: #undef DrawStateW #undef GetOpenFileNameW #undef GetSaveFileNameW @@ -120,7 +120,7 @@ static void wxFixOPENFILENAME(LPOPENFILENAME ofn) ofn->nFileOffset = wxStrlen(ofn->lpstrFile)+1; } } -#endif +#endif // OFN_EXPLORER } WXDLLEXPORT int wxMSLU_GetOpenFileNameW(void *ofn) @@ -222,7 +222,7 @@ WXDLLIMPEXP_BASE int wxMSLU__wstat(const wxChar *name, struct _stat *buffer) } #ifdef __BORLANDC__ -//here _stati64 is defined as stati64, see msw/mslu.h line 62 +//here _stati64 is defined as stati64, see wx/filefn.h #undef _stati64 WXDLLIMPEXP_BASE int wxMSLU__wstati64(const wxChar *name, struct _stati64 *buffer) { -- 2.45.2