diff --git a/CMakeLists.txt b/CMakeLists.txt index f05d9f6ec..2bb3196b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -344,6 +344,10 @@ ENDIF() IF(WIN32 AND NOT ANDROID) + # Check window version + INCLUDE (OsgDetermineWinVersion) + get_WIN32_WINNT(WIN_VERSION) + ADD_DEFINITIONS(-D_WIN32_WINNT=${WIN_VERSION}) IF(MSVC) # This option is to enable the /MP switch for Visual Studio 2005 and above compilers diff --git a/CMakeModules/OsgDetermineWinVersion.cmake b/CMakeModules/OsgDetermineWinVersion.cmake new file mode 100644 index 000000000..dbf9554a9 --- /dev/null +++ b/CMakeModules/OsgDetermineWinVersion.cmake @@ -0,0 +1,22 @@ +# - If Windows is used, this script sets the variable WIN32_WINNT to the corresponding windows version + +if (WIN32) + message(STATUS "Checking windows version...") + macro(get_WIN32_WINNT version) + if (CMAKE_SYSTEM_VERSION) + set(ver ${CMAKE_SYSTEM_VERSION}) + string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver}) + string(REGEX MATCH "^([0-9]+)" verMajor ${ver}) + # Check for Windows 10, b/c we'll need to convert to hex 'A'. + if ("${verMajor}" MATCHES "10") + set(verMajor "A") + string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver}) + endif ("${verMajor}" MATCHES "10") + # Remove all remaining '.' characters. + string(REPLACE "." "" ver ${ver}) + # Prepend each digit with a zero. + string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver}) + set(${version} "0x${ver}") + endif(CMAKE_SYSTEM_VERSION) + endmacro(get_WIN32_WINNT) +endif(WIN32) \ No newline at end of file diff --git a/include/osgViewer/api/Win32/GraphicsHandleWin32 b/include/osgViewer/api/Win32/GraphicsHandleWin32 index f6ac8fa28..5959e6bf2 100644 --- a/include/osgViewer/api/Win32/GraphicsHandleWin32 +++ b/include/osgViewer/api/Win32/GraphicsHandleWin32 @@ -16,8 +16,17 @@ #include +// Fallback if not correctly detected in CMake macro #ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0500 +//#define _WIN32_WINNT 0x0A00 // Windows 10 +//#define _WIN32_WINNT 0x0603 // Windows 8.1 +//#define _WIN32_WINNT 0x0602 // Windows 8 +//#define _WIN32_WINNT 0x0601 // Windows 7 +//#define _WIN32_WINNT 0x0600 // Windows Server 2008 +//#define _WIN32_WINNT 0x0600 // Windows Vista +//#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2 +//#define _WIN32_WINNT 0x0501 // Windows Server 2003, Windows XP +#define _WIN32_WINNT 0x0500 // Windows NT #endif #include