X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/221e1181e82ea26a3ed66d39adad45209b18347d..cb7acf9cc78c309026bed1038631f2663cd90bda:/src/msw/utils.cpp diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index d2b2ce1f50..e66b56d51d 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -914,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__