diff --git a/inc/dd.h b/inc/dd.h index 1835700..c423207 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -107,6 +107,7 @@ typedef struct cnc_ddraw BOOL fixchildwindows; BOOL d3d9linear; int maxgameticks; + BOOL alt_key_down; BOOL bnet_active; BOOL bnet_was_fullscreen; BOOL bnet_was_upscaled; diff --git a/src/wndproc.c b/src/wndproc.c index 240959c..1953839 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -501,11 +501,10 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam break; } - if (g_ddraw->noactivateapp) - return 0; + if (wParam && g_ddraw->alt_key_down) + PostMessageA(g_ddraw->hwnd, WM_SYSKEYUP, VK_MENU, 0); - if (g_ddraw->windowed && !wParam) - return 0; + return 0; } break; case WM_AUTORENDERER: @@ -536,6 +535,20 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam return 0; } + if (wParam == VK_MENU) + { + g_ddraw->alt_key_down = TRUE; + } + + break; + } + case WM_SYSKEYUP: + { + if (wParam == VK_MENU) + { + g_ddraw->alt_key_down = FALSE; + } + break; } case WM_KEYDOWN: