diff --git a/DDrawCompat/Dll/DllMain.cpp b/DDrawCompat/Dll/DllMain.cpp index af00281..7d4e718 100644 --- a/DDrawCompat/Dll/DllMain.cpp +++ b/DDrawCompat/Dll/DllMain.cpp @@ -35,6 +35,8 @@ HRESULT WINAPI SetAppCompatData(DWORD, DWORD); namespace { + const DWORD DISABLE_MAX_WINDOWED_MODE = 12; + template using FuncPtr = Result(WINAPI*)(Params...); @@ -162,6 +164,16 @@ namespace LOG_INFO << "Environment variable " << var << " = \"" << Dll::getEnvVar(var) << '"'; } + HRESULT WINAPI setAppCompatData(DWORD param1, DWORD param2) + { + LOG_FUNC("SetAppCompatData", param1, param2); + if (DISABLE_MAX_WINDOWED_MODE == param1) + { + return LOG_RESULT(S_OK); + } + return LOG_RESULT(CALL_ORIG_PROC(SetAppCompatData)(param1, param2)); + } + void setDpiAwareness() { auto dpiAwareness = Config::dpiAwareness.get(); @@ -294,6 +306,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) Dll::g_jmpTargetProcs = Dll::g_origProcs; VISIT_PUBLIC_DDRAW_PROCS(HOOK_DDRAW_PROC); + Compat::hookFunction(reinterpret_cast(Dll::g_origProcs.SetAppCompatData), + static_cast(&setAppCompatData), "SetAppCompatData"); Input::installHooks(); Win32::MemoryManagement::installHooks(); @@ -310,8 +324,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) if (Config::Settings::FullscreenMode::EXCLUSIVE == Config::fullscreenMode.get()) { - const DWORD disableMaxWindowedMode = 12; - CALL_ORIG_PROC(SetAppCompatData)(disableMaxWindowedMode, 0); + CALL_ORIG_PROC(SetAppCompatData)(DISABLE_MAX_WINDOWED_MODE, 1); } if (Config::Settings::DesktopResolution::DESKTOP != Config::desktopResolution.get())