From c66b972f6853e5c6c601aba6b4a1447862f34bff Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sat, 1 Jun 2024 02:20:21 +0200 Subject: [PATCH] fix chils windows in dress designer --- src/render_gdi.c | 2 +- src/winapi_hooks.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/render_gdi.c b/src/render_gdi.c index 78f7d5d..d67bee9 100644 --- a/src/render_gdi.c +++ b/src/render_gdi.c @@ -93,7 +93,7 @@ DWORD WINAPI gdi_render_main(void) memcpy(&g_ddraw.primary->bmi->bmiColors[0], g_ddraw.primary->palette->data_rgb, 256 * sizeof(int)); } - if (InterlockedExchange(&g_ddraw.render.clear_screen, FALSE)) + if (InterlockedExchange(&g_ddraw.render.clear_screen, FALSE) || g_ddraw.child_window_exists) { RECT rc = { 0, 0, g_ddraw.render.width, g_ddraw.render.height }; FillRect(g_ddraw.render.hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH)); diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 9ee2eab..d4431b0 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -38,7 +38,7 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint) int x = max(pt.x - g_ddraw.mouse.x_adjust, 0); int y = max(pt.y - g_ddraw.mouse.y_adjust, 0); - if (g_config.adjmouse) + if (g_config.adjmouse && !g_ddraw.child_window_exists) { x = (DWORD)(roundf(x * g_ddraw.mouse.unscale_x)); y = (DWORD)(roundf(y * g_ddraw.mouse.unscale_y)); @@ -1464,6 +1464,16 @@ HWND WINAPI fake_CreateWindowExA( dbg_dump_wnd_styles(dwStyle, dwExStyle); + /* The American Girls Dress Designer */ + if (HIWORD(lpClassName) && + _strcmpi(lpClassName, "AfxFrameOrView42s") == 0 && + g_ddraw.ref && g_ddraw.hwnd && hWndParent == g_ddraw.hwnd && + g_config.fake_mode[0] && + (dwStyle & (WS_POPUP | WS_CHILD)) == (WS_POPUP | WS_CHILD)) + { + dwStyle &= ~WS_POPUP; + } + /* Center Claw DVD movies */ if (HIWORD(lpClassName) && _strcmpi(lpClassName, "Afx:400000:3") == 0 &&