From 8b8a4e544f3ed7e08e1a268dc0f9722c98285a3f Mon Sep 17 00:00:00 2001 From: narzoul Date: Sat, 13 Feb 2021 12:13:18 +0100 Subject: [PATCH] Redraw window frame on SWP_FRAMECHANGED --- DDrawCompat/Gdi/WinProc.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/DDrawCompat/Gdi/WinProc.cpp b/DDrawCompat/Gdi/WinProc.cpp index 5e4146b..a837745 100644 --- a/DDrawCompat/Gdi/WinProc.cpp +++ b/DDrawCompat/Gdi/WinProc.cpp @@ -37,7 +37,7 @@ namespace bool isUser32ScrollBar(HWND hwnd); void onCreateWindow(HWND hwnd); void onDestroyWindow(HWND hwnd); - void onWindowPosChanged(HWND hwnd); + void onWindowPosChanged(HWND hwnd, const WINDOWPOS& wp); void onWindowPosChanging(HWND hwnd, WINDOWPOS& wp); void setWindowProc(HWND hwnd, WNDPROC wndProcA, WNDPROC wndProcW); @@ -57,7 +57,7 @@ namespace break; case WM_WINDOWPOSCHANGED: - onWindowPosChanged(hwnd); + onWindowPosChanged(hwnd, *reinterpret_cast(lParam)); break; } @@ -291,7 +291,7 @@ namespace } } - void onWindowPosChanged(HWND hwnd) + void onWindowPosChanged(HWND hwnd, const WINDOWPOS& wp) { for (auto notifyFunc : g_windowPosChangeNotifyFuncs) { @@ -302,6 +302,12 @@ namespace { Gdi::Window::updateAll(); } + + if (wp.flags & SWP_FRAMECHANGED) + { + RECT r = { -1, -1, 0, 0 }; + RedrawWindow(hwnd, &r, nullptr, RDW_INVALIDATE | RDW_FRAME); + } } void onWindowPosChanging(HWND hwnd, WINDOWPOS& wp)