added workaround for Unicode functions not working under MSLU

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2001-12-31 00:45:29 +00:00
parent 53991381a9
commit 6de5b59919
2 changed files with 30 additions and 1 deletions

View File

@ -80,7 +80,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
#define wxTell _tell
#if wxUSE_UNICODE
#define wxOpen _wopen
#if wxUSE_UNICODE_MSLU
WXDLLEXPORT int wxOpen(const wxChar *name, int flags, int mode);
#else
#define wxOpen _wopen
#endif
#define wxAccess _waccess
#define wxMkDir _wmkdir

View File

@ -1764,3 +1764,28 @@ bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special )
#ifdef __VISUALC__
#pragma warning(default:4706) // assignment within conditional expression
#endif // VC++
//------------------------------------------------------------------------
// Missing functions in Unicode for Win9x
//------------------------------------------------------------------------
// NB: MSLU only covers Win32 API, it doesn't provide Unicode implementation of
// libc functions. Unfortunately, some of MSVCRT wchar_t functions
// (e.g. _wopen) don't work on Windows 9x, so we have to workaround it
// 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.
#if wxUSE_UNICODE_MSLU
#if defined( __VISUALC__ ) \
|| ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \
|| ( defined(__MWERKS__) && defined(__WXMSW__) )
WXDLLEXPORT int wxOpen(const wxChar *name, int flags, int mode)
{
if ( wxGetOsVersion() == wxWINDOWS_NT )
return _wopen(name, flags, mode);
else
return _open(wxConvFile.cWX2MB(name), flags, mode);
}
#endif
#endif // wxUSE_UNICODE_MSLU