From 260769c03b0f8a0905dae7deda3cd24ab6a2acd1 Mon Sep 17 00:00:00 2001
From: Ruevski
Date: Thu, 23 May 2019 11:01:26 +0300
Subject: [PATCH] Win32: Restore Windows XP Compatibility
By setting WINVER=0x0501 (Windows XP) in CMakeLists.txt and adding a few
missing defines in guiwin.cpp and configuring OPENGL=1 in CMake
Solvespace (3.0~25b6eba1) compiles and works perfectly on Windows XP.
Tested with MinGW GCC-6.3.0-1
---
CMakeLists.txt | 6 +++---
src/platform/guiwin.cpp | 18 ++++++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6367874..2f9f738 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -259,8 +259,8 @@ if(WIN32)
-D_CRT_SECURE_NO_DEPRECATE
-D_CRT_SECURE_NO_WARNINGS
-D_SCL_SECURE_NO_WARNINGS
- -DWINVER=0x0601
- -D_WIN32_WINNT=0x0601
+ -DWINVER=0x0501
+ -D_WIN32_WINNT=0x0501
-D_WIN32_IE=_WIN32_WINNT
-DISOLATION_AWARE_ENABLED
-DWIN32
@@ -285,7 +285,7 @@ if(MSVC)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- set(WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter")
+ set(WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(WARNING_FLAGS "${WARNING_FLAGS} -Wfloat-conversion")
endif()
diff --git a/src/platform/guiwin.cpp b/src/platform/guiwin.cpp
index 6914a8d..ab5fb4b 100644
--- a/src/platform/guiwin.cpp
+++ b/src/platform/guiwin.cpp
@@ -12,6 +12,24 @@
#include
#include
+// Macros to compile under XP
+#if !defined(LSTATUS)
+# define LSTATUS LONG
+#endif
+
+#if !defined(MAPVK_VK_TO_CHAR)
+# define MAPVK_VK_TO_CHAR 2
+#endif
+
+#if !defined(USER_DEFAULT_SCREEN_DPI)
+# define USER_DEFAULT_SCREEN_DPI 96
+#endif
+
+#if !defined(TTM_POPUP)
+# define TTM_POPUP (WM_USER + 34)
+#endif
+// End macros to compile under XP
+
#if !defined(WM_DPICHANGED)
# define WM_DPICHANGED 0x02E0
#endif