X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/373658eb493827a9a68a79eeaaab1dbfc69a206b..761e1e0702fb50aca31fb7a38dcb0f00ae4d2ac6:/src/msw/utils.cpp diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index c190b20543..e66b56d51d 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -498,14 +498,22 @@ bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree) return FALSE; } + // ULARGE_INTEGER is a union of a 64 bit value and a struct containing + // two 32 bit fields which may be or may be not named - try to make it + // compile in all cases +#if defined(__BORLANDC__) && !defined(_ANONYMOUS_STRUCT) + #define UL(ul) ul.u +#else // anon union + #define UL(ul) ul +#endif if ( pTotal ) { - *pTotal = wxLongLong(bytesTotal.HighPart, bytesTotal.LowPart); + *pTotal = wxLongLong(UL(bytesTotal).HighPart, UL(bytesTotal).LowPart); } if ( pFree ) { - *pFree = wxLongLong(bytesFree.HighPart, bytesFree.LowPart); + *pFree = wxLongLong(UL(bytesFree).HighPart, UL(bytesFree).LowPart); } } else @@ -906,31 +914,43 @@ wxString wxGetOsDescription() int wxGetOsVersion(int *majorVsn, int *minorVsn) { #if defined(__WIN32__) && !defined(__SC__) - OSVERSIONINFO info; - wxZeroMemory(info); - - info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - if ( ::GetVersionEx(&info) ) + static int ver = -1, major = -1, minor = -1; + + if ( ver == -1 ) { - if (majorVsn) - *majorVsn = info.dwMajorVersion; - if (minorVsn) - *minorVsn = info.dwMinorVersion; + OSVERSIONINFO info; + wxZeroMemory(info); - switch ( info.dwPlatformId ) + ver = wxWINDOWS; + info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + if ( ::GetVersionEx(&info) ) { - case VER_PLATFORM_WIN32s: - return wxWIN32S; + major = info.dwMajorVersion; + minor = info.dwMinorVersion; - case VER_PLATFORM_WIN32_WINDOWS: - return wxWIN95; + switch ( info.dwPlatformId ) + { + case VER_PLATFORM_WIN32s: + ver = wxWIN32S; + break; - case VER_PLATFORM_WIN32_NT: - return wxWINDOWS_NT; + case VER_PLATFORM_WIN32_WINDOWS: + ver = wxWIN95; + break; + + case VER_PLATFORM_WIN32_NT: + ver = wxWINDOWS_NT; + break; + } } } - return wxWINDOWS; // error if we get here, return generic value + if (majorVsn && major != -1) + *majorVsn = major; + if (minorVsn && minor != -1) + *minorVsn = minor; + + return ver; #else // Win16 int retValue = wxWINDOWS; #ifdef __WINDOWS_386__ @@ -1504,7 +1524,8 @@ int wxGetOsVersion(int *majorVsn, int *minorVsn) #if defined(__WIN32__) && !defined(__WXMICROWIN__) -#if wxUSE_GUI +// wxGetNativeFontEncoding() doesn't exist neither in wxBase nor in wxUniv +#if wxUSE_GUI && !defined(__WXUNIVERSAL__) #include "wx/fontmap.h"