X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8bb6b2c057edbcc5b87f00a8af6ac70f6fd69727..3d63133a5ef146494fa821c76c705e535990086a:/src/msw/utils.cpp diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index ece5167e97..7ded6a5d18 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -25,6 +25,7 @@ #endif #ifndef WX_PRECOMP + #include "wx/msw/missing.h" // CHARSET_HANGUL #include "wx/utils.h" #include "wx/app.h" #include "wx/intl.h" @@ -41,7 +42,6 @@ #include "wx/confbase.h" // for wxExpandEnvVars() #include "wx/msw/private.h" // includes -#include "wx/msw/missing.h" // CHARSET_HANGUL #if defined(__CYGWIN__) //CYGWIN gives annoying warning about runtime stuff if we don't do this @@ -387,7 +387,7 @@ const wxChar* wxGetHomeDir(wxString *pstr) wxString& strDir = *pstr; // first branch is for Cygwin -#if defined(__UNIX__) +#if defined(__UNIX__) && !defined(__WINE__) const wxChar *szHome = wxGetenv("HOME"); if ( szHome == NULL ) { // we're homeless... @@ -951,7 +951,7 @@ bool wxShutdown(wxShutdownFlags WXUNUSED_IN_WINCE(wFlags)) #elif defined(__WIN32__) bool bOK = true; - if ( wxGetOsVersion(NULL, NULL) == wxWINDOWS_NT ) // if is NT or 2K + if ( wxGetOsVersion(NULL, NULL) == wxOS_WINDOWS_NT ) // if is NT or 2K { // Get a token for this process. HANDLE hToken; @@ -1162,19 +1162,27 @@ wxString wxGetOsDescription() return str; } -// taken from http://blogs.msdn.com/oldnewthing/archive/2005/02/01/364563.aspx bool wxIsPlatform64Bit() { #if defined(_WIN64) return true; // 64-bit programs run only on Win64 -#elif defined(_WIN32) - // 32-bit programs run on both 32-bit and 64-bit Windows - // so must sniff - BOOL f64 = FALSE; - return IsWow64Process(GetCurrentProcess(), &f64) && f64; -#else - return false; // Win64 does not support Win16 -#endif +#else // Win32 + // 32-bit programs run on both 32-bit and 64-bit Windows so check + typedef BOOL (WINAPI *IsWow64Process_t)(HANDLE, BOOL *); + + wxDynamicLibrary dllKernel32(_T("kernel32.dll")); + IsWow64Process_t pfnIsWow64Process = + (IsWow64Process_t)dllKernel32.RawGetSymbol(_T("IsWow64Process")); + + BOOL wow64 = FALSE; + if ( pfnIsWow64Process ) + { + pfnIsWow64Process(::GetCurrentProcess(), &wow64); + } + //else: running under a system without Win64 support + + return wow64 != FALSE; +#endif // Win64/Win32 } wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) @@ -1189,8 +1197,8 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) if (verMin) *verMin = info.dwMinorVersion; } -#if defined(__WXHANDHELD__) || defined( __WXWINCE__ ) - return wxOS_WINDOWS_WINCE; +#if defined( __WXWINCE__ ) + return wxOS_WINDOWS_CE; #elif defined( __WXMICROWIN__ ) return wxOS_WINDOWS_MICRO; #else @@ -1213,7 +1221,7 @@ wxWinVersion wxGetWinVersion() verMin; switch ( wxGetOsVersion(&verMaj, &verMin) ) { - case wxWIN95: + case wxOS_WINDOWS_9X: if ( verMaj == 4 ) { switch ( verMin ) @@ -1230,7 +1238,7 @@ wxWinVersion wxGetWinVersion() } break; - case wxWINDOWS_NT: + case wxOS_WINDOWS_NT: switch ( verMaj ) { case 3: @@ -1258,6 +1266,9 @@ wxWinVersion wxGetWinVersion() } break; + default: + // Do nothing just to silence GCC warning + break; } return wxWinVersion_Unknown; @@ -1379,10 +1390,10 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding) case wxFONTENCODING_ISO8859_8: ret = 28598; break; case wxFONTENCODING_ISO8859_9: ret = 28599; break; case wxFONTENCODING_ISO8859_10: ret = 28600; break; - case wxFONTENCODING_ISO8859_11: ret = 28601; break; + case wxFONTENCODING_ISO8859_11: ret = 874; break; // case wxFONTENCODING_ISO8859_12, // doesn't exist currently, but put it case wxFONTENCODING_ISO8859_13: ret = 28603; break; - case wxFONTENCODING_ISO8859_14: ret = 28604; break; + // case wxFONTENCODING_ISO8859_14: ret = 28604; break; // no correspondence on Windows case wxFONTENCODING_ISO8859_15: ret = 28605; break; case wxFONTENCODING_KOI8: ret = 20866; break; case wxFONTENCODING_KOI8_U: ret = 21866; break;