From 4de6eee162d34b0b415b27bc910e47f03118a07c Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Wed, 29 May 2024 04:28:05 +0200
Subject: [PATCH] make sure we got move+close menu items

---
 inc/config.h       |  1 -
 src/config.c       | 14 --------------
 src/dd.c           |  4 +---
 src/winapi_hooks.c |  7 +++++++
 4 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/inc/config.h b/inc/config.h
index 0e8f869..135f0df 100644
--- a/inc/config.h
+++ b/inc/config.h
@@ -99,7 +99,6 @@ 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 156f23e..379ce15 100644
--- a/src/config.c
+++ b/src/config.c
@@ -109,7 +109,6 @@ 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;
 
@@ -488,7 +487,6 @@ static void cfg_create_ini()
             "\n"
             "; Carmen Sandiego's Great Chase - NOT WORKING YET\n"
             "[TIME32]\n"
-            "learning_company_hack=true\n"
             "allow_wmactivate=true\n"
             "renderer=gdi\n"
             "adjmouse=false\n"
@@ -682,7 +680,6 @@ 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"
@@ -690,7 +687,6 @@ 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"
@@ -698,7 +694,6 @@ 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"
@@ -706,7 +701,6 @@ 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"
@@ -714,7 +708,6 @@ 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"
@@ -722,7 +715,6 @@ 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"
@@ -730,7 +722,6 @@ 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"
@@ -738,7 +729,6 @@ 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"
@@ -1033,7 +1023,6 @@ static void cfg_create_ini()
             "\n"
             "; Reader Rabbit Toddler: Fly the Dreamship\n"
             "[Fly the Dreamship]\n"
-            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -1041,7 +1030,6 @@ static void cfg_create_ini()
             "\n"
             "; Reader Rabbit Toddler: Playtime for Baby\n"
             "[rrbaby]\n"
-            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -1049,7 +1037,6 @@ static void cfg_create_ini()
             "\n"
             "; Reader Rabbit Learn To Read With Phonics\n"
             "[Superr]\n"
-            "learning_company_hack=true\n"
             "adjmouse=false\n"
             "fixchilds=3\n"
             "maintas=false\n"
@@ -1057,7 +1044,6 @@ 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 d2eee80..494177a 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -924,12 +924,10 @@ 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) & ~(rem_flags));
+                (real_GetWindowLongA(g_ddraw.hwnd, GWL_STYLE) | WS_OVERLAPPEDWINDOW) & ~(WS_MAXIMIZE));
         }
 
         LONG exstyle = real_GetWindowLongA(g_ddraw.hwnd, GWL_EXSTYLE);
diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c
index 9b51570..af89ac0 100644
--- a/src/winapi_hooks.c
+++ b/src/winapi_hooks.c
@@ -534,6 +534,13 @@ BOOL WINAPI fake_ShowWindow(HWND hWnd, int nCmdShow)
 {
     if (g_ddraw.ref && g_ddraw.hwnd == hWnd)
     {
+        /* Make sure we got close/move menu items (Almost all of the The Learning Company games) */
+        HMENU menu = GetSystemMenu(hWnd, FALSE);
+        if (!menu || GetMenuState(menu, SC_CLOSE, MF_BYCOMMAND) == -1 || GetMenuState(menu, SC_MOVE, MF_BYCOMMAND) == -1)
+        {
+            GetSystemMenu(hWnd, TRUE);
+        }
+
         if (nCmdShow == SW_SHOWMAXIMIZED)
             nCmdShow = SW_SHOWNORMAL;