X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/136cb3c7a9fff4252c2bb48aac5db124f8dc3ce0..949cb163a78520153dbdb3cd2e2dbaab075be9ca:/src/msw/mslu.cpp?ds=sidebyside diff --git a/src/msw/mslu.cpp b/src/msw/mslu.cpp index 8e1dea110d..eb7866d90c 100644 --- a/src/msw/mslu.cpp +++ b/src/msw/mslu.cpp @@ -9,7 +9,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation #endif @@ -18,6 +18,7 @@ #ifdef __BORLANDC__ #pragma hdrstop +#include #endif #ifndef WX_PRECOMP @@ -34,7 +35,7 @@ // by calling the char version. We still want to use wchar_t version on // NT/2000/XP, though, because they allow for Unicode file names. // -// Moreover, there are bugs in unicows.dll, of course. We have to +// Moreover, there are bugs in unicows.dll, of course. We have to // workaround them, too. // //------------------------------------------------------------------------ @@ -44,13 +45,12 @@ #include #include +#include -#ifdef __GNUWIN32__ - #include - #include +#ifdef __VISUALC__ + #include #endif - // Undef redirection macros defined in wx/msw/mslu.h: #undef DrawStateW #undef GetOpenFileNameW @@ -62,25 +62,25 @@ #if wxUSE_GUI -WXDLLEXPORT bool wxMSLU_DrawStateW(WXHDC dc, WXHBRUSH br, WXFARPROC outputFunc, - WXLPARAM lData, WXWPARAM wData, - int x, int y, int cx, int cy, +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) { // VS: There's yet another bug in MSLU: DrawStateW behaves like if it was - // expecting char*, not wchar_t* input. We have to use DrawStateA + // expecting char*, not wchar_t* input. We have to use DrawStateA // explicitly. if ( wxUsingUnicowsDll() ) { - return DrawStateA((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, + return DrawStateA((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, (LPARAM)(const char*) wxConvLocal.cWX2MB((const wxChar*)lData), wData, x, y, cx, cy, flags); } else { - return DrawStateW((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, + return DrawStateW((HDC)dc, (HBRUSH)br, (DRAWSTATEPROC)outputFunc, lData, wData, x, y, cx, cy, flags); } } @@ -88,10 +88,10 @@ WXDLLEXPORT bool wxMSLU_DrawStateW(WXHDC dc, WXHBRUSH br, WXFARPROC outputFunc, static void wxFixOPENFILENAME(LPOPENFILENAME ofn) { #ifdef OFN_EXPLORER - // VS: there's a bug in unicows.dll - when multiple files are selected, - // of.nFileOffset doesn't point to the first filename but rather to + // VS: there's a bug in unicows.dll - when multiple files are selected, + // of.nFileOffset doesn't point to the first filename but rather to // the last component of directory name. This bug is known to MSLU - // developers, but they are not going to fix it: "this is a true + // developers, but they are not going to fix it: "this is a true // limitation, that we have decided to live with" and "working // harder on this case just did not seem worth the effort"... // @@ -109,17 +109,17 @@ static void wxFixOPENFILENAME(LPOPENFILENAME ofn) #endif } -WXDLLEXPORT bool wxMSLU_GetOpenFileNameW(void *ofn) +WXDLLEXPORT int wxMSLU_GetOpenFileNameW(void *ofn) { - bool ret = GetOpenFileName((LPOPENFILENAME)ofn); + int ret = GetOpenFileName((LPOPENFILENAME)ofn); if ( wxUsingUnicowsDll() && ret != 0 ) wxFixOPENFILENAME((LPOPENFILENAME)ofn); return ret; } -WXDLLEXPORT bool wxMSLU_GetSaveFileNameW(void *ofn) +WXDLLEXPORT int wxMSLU_GetSaveFileNameW(void *ofn) { - bool ret = GetSaveFileName((LPOPENFILENAME)ofn); + int ret = GetSaveFileName((LPOPENFILENAME)ofn); if ( wxUsingUnicowsDll() && ret != 0 ) wxFixOPENFILENAME((LPOPENFILENAME)ofn); return ret; @@ -131,6 +131,8 @@ WXDLLEXPORT bool wxMSLU_GetSaveFileNameW(void *ofn) // Missing libc file manipulation functions in Win9x //------------------------------------------------------------------------ +#if wxUSE_BASE + WXDLLEXPORT int wxMSLU__trename(const wxChar *oldname, const wxChar *newname) { if ( wxUsingUnicowsDll() ) @@ -149,12 +151,17 @@ WXDLLEXPORT int wxMSLU__tremove(const wxChar *name) #if defined( __VISUALC__ ) \ || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ - || ( defined(__MWERKS__) && defined(__WXMSW__) ) + || ( defined(__MWERKS__) && defined(__WXMSW__) ) \ + || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) WXDLLEXPORT int wxMSLU__wopen(const wxChar *name, int flags, int mode) { if ( wxUsingUnicowsDll() ) +#ifdef __BORLANDC__ + return open(wxConvFile.cWX2MB(name), flags, mode); +#else return _open(wxConvFile.cWX2MB(name), flags, mode); +#endif else return _wopen(name, flags, mode); } @@ -191,6 +198,8 @@ WXDLLEXPORT int wxMSLU__wstat(const wxChar *name, struct _stat *buffer) return _wstat(name, buffer); } -#endif +#endif // compilers having wopen() &c + +#endif // wxUSE_BASE #endif // wxUSE_UNICODE_MSLU