Parcourir la source

Handle `ENABLE_VIRTUAL_TERMINAL_PROCESSING` more gracefully on earlier versions of Windows.

DannyDaemonic il y a 2 ans
Parent
commit
9ca4abed89
1 fichiers modifiés avec 7 ajouts et 3 suppressions
  1. 7 3
      examples/console.cpp

+ 7 - 3
examples/console.cpp

@@ -10,6 +10,9 @@
 #include <windows.h>
 #include <windows.h>
 #include <fcntl.h>
 #include <fcntl.h>
 #include <io.h>
 #include <io.h>
+#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
+#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
+#endif
 #else
 #else
 #include <climits>
 #include <climits>
 #include <sys/ioctl.h>
 #include <sys/ioctl.h>
@@ -68,9 +71,10 @@ namespace console {
             }
             }
         }
         }
         if (hConsole) {
         if (hConsole) {
-            // Enable ANSI colors on Windows 10+
-            if (advanced_display && !(dwMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING)) {
-                SetConsoleMode(hConsole, dwMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
+            // Check conditions combined to reduce nesting
+            if (advanced_display && !(dwMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) &&
+                !SetConsoleMode(hConsole, dwMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING)) {
+                advanced_display = false;
             }
             }
             // Set console output codepage to UTF8
             // Set console output codepage to UTF8
             SetConsoleOutputCP(CP_UTF8);
             SetConsoleOutputCP(CP_UTF8);