From 2efe3567ca966784b3cd514185337342317cc8e2 Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Mon, 27 May 2024 06:36:18 +0200
Subject: [PATCH] add workaround for learning company games

---
 inc/config.h |  1 +
 src/config.c | 10 ++++++++++
 src/dd.c     |  5 +++--
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/inc/config.h b/inc/config.h
index 135f0df..0e8f869 100644
--- a/inc/config.h
+++ b/inc/config.h
@@ -99,6 +99,7 @@ typedef struct CNCDDRAWCONFIG
     BOOL infantryhack;
     BOOL stronghold_hack;
     BOOL mgs_hack;
+    BOOL learning_company_hack;
 
 } CNCDDRAWCONFIG;
 
diff --git a/src/config.c b/src/config.c
index e83191a..e1c62f0 100644
--- a/src/config.c
+++ b/src/config.c
@@ -109,6 +109,7 @@ void cfg_load()
     GET_BOOL(g_config.infantryhack, "infantryhack", FALSE);
     GET_BOOL(g_config.stronghold_hack, "stronghold_hack", FALSE);
     GET_BOOL(g_config.mgs_hack, "mgs_hack", FALSE);
+    GET_BOOL(g_config.learning_company_hack, "learning_company_hack", FALSE);
 
     GameHandlesClose = GameHandlesClose || g_config.infantryhack;
 
@@ -665,6 +666,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders 4th Grade Adventures\n"
             "[4thadv32]\n"
+            "learning_company_hack=true\n" 
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -672,6 +674,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders 4th Grade Adventures\n"
             "[4thad32]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -679,6 +682,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders 5th Grade Adventures\n"
             "[5thadv32]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -686,6 +690,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders 5th Grade Adventures\n"
             "[5thad32]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -693,6 +698,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders 6th Grade Adventures\n"
             "[CF6]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -700,6 +706,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders(R) Reading Adventures Ages 9-12\n"
             "[cfread]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -707,6 +714,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders Math Adventures 1.0\n"
             "[TCFM32]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -714,6 +722,7 @@ static void cfg_create_ini()
             "\n"
             "; ClueFinders Math Adventures 2.0\n"
             "[cfmath32]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -998,6 +1007,7 @@ static void cfg_create_ini()
             "\n"
             "; Reader Rabbit's(R) Math Ages 6 - 9 (2002)\n"
             "[RRM69_32]\n"
+            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
diff --git a/src/dd.c b/src/dd.c
index d5a2fec..53faeec 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -918,11 +918,12 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
         }
         else
         {
+            DWORD rem_flags = (g_config.learning_company_hack ? WS_SYSMENU : 0) | WS_MAXIMIZE;
+
             real_SetWindowLongA(
                 g_ddraw.hwnd,
                 GWL_STYLE,
-                (real_GetWindowLongA(g_ddraw.hwnd, GWL_STYLE) | WS_OVERLAPPEDWINDOW) & ~(WS_MAXIMIZE));
-            //(real_GetWindowLongA(g_ddraw.hwnd, GWL_STYLE) | WS_OVERLAPPEDWINDOW) & ~(WS_MAXIMIZE | WS_SYSMENU));
+                (real_GetWindowLongA(g_ddraw.hwnd, GWL_STYLE) | WS_OVERLAPPEDWINDOW) & ~(rem_flags));
         }
 
         LONG exstyle = real_GetWindowLongA(g_ddraw.hwnd, GWL_EXSTYLE);