1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

detect movie windows

This commit is contained in:
FunkyFr3sh 2022-10-07 01:05:27 +02:00
parent ad8215eee8
commit 053206b414
2 changed files with 32 additions and 10 deletions

View File

@ -426,7 +426,18 @@ BOOL CALLBACK util_enum_child_proc(HWND hwnd, LPARAM lparam)
pos.top); pos.top);
*/ */
if (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE) char title[MAX_PATH] = { 0 };
GetWindowTextA(hwnd, title, sizeof(title) - 1);
char class_name[MAX_PATH] = { 0 };
GetClassNameA(hwnd, class_name, sizeof(class_name) - 1);
//TRACE_EXT(" AVIWINDOW class=%s, name=%s\n", class_name, title);
if (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE ||
strcmp(title, "ActiveMovie Window") == 0 ||
strcmp(class_name, "AVIWnd32") == 0 ||
strcmp(class_name, "MCIWndClass") == 0)
{ {
LONG style = real_GetWindowLongA(hwnd, GWL_EXSTYLE); LONG style = real_GetWindowLongA(hwnd, GWL_EXSTYLE);

View File

@ -561,8 +561,19 @@ BOOL WINAPI fake_StretchBlt(
{ {
HWND hwnd = WindowFromDC(hdcDest); HWND hwnd = WindowFromDC(hdcDest);
char class_name[MAX_PATH] = { 0 };
if (g_ddraw && g_ddraw->hwnd && hwnd != g_ddraw->hwnd)
{
GetClassNameA(hwnd, class_name, sizeof(class_name) - 1);
}
if (g_ddraw && g_ddraw->hwnd && if (g_ddraw && g_ddraw->hwnd &&
(hwnd == g_ddraw->hwnd || (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE && IsChild(g_ddraw->hwnd, hwnd)))) (hwnd == g_ddraw->hwnd ||
(IsChild(g_ddraw->hwnd, hwnd) &&
(g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE ||
strcmp(class_name, "AVIWnd32") == 0 ||
strcmp(class_name, "MCIWndClass") == 0))))
{ {
if (g_ddraw->primary && (g_ddraw->primary->bpp == 16 || g_ddraw->primary->bpp == 32 || g_ddraw->primary->palette)) if (g_ddraw->primary && (g_ddraw->primary->bpp == 16 || g_ddraw->primary->bpp == 32 || g_ddraw->primary->palette))
{ {
@ -571,7 +582,7 @@ BOOL WINAPI fake_StretchBlt(
if (primary_dc) if (primary_dc)
{ {
BOOL result = BOOL result =
real_StretchBlt(primary_dc, xDest, yDest, wDest, hDest, hdcSrc, xSrc, ySrc, wSrc, hSrc, rop); real_StretchBlt(primary_dc, xDest, yDest, wDest, hDest, hdcSrc, xSrc, ySrc, wSrc, hSrc, rop);
dds_ReleaseDC(g_ddraw->primary, primary_dc); dds_ReleaseDC(g_ddraw->primary, primary_dc);
@ -579,19 +590,19 @@ BOOL WINAPI fake_StretchBlt(
return result; return result;
} }
} }
else if (g_ddraw->width > 0) else if (g_ddraw->width > 0 && g_ddraw->render.hdc)
{ {
return real_StretchBlt( return real_StretchBlt(
hdcDest, g_ddraw->render.hdc,
xDest + g_ddraw->render.viewport.x, xDest + g_ddraw->render.viewport.x,
yDest + g_ddraw->render.viewport.y, yDest + g_ddraw->render.viewport.y,
(int)(wDest * g_ddraw->render.scale_w), (int)(wDest * g_ddraw->render.scale_w),
(int)(hDest * g_ddraw->render.scale_h), (int)(hDest * g_ddraw->render.scale_h),
hdcSrc, hdcSrc,
xSrc, xSrc,
ySrc, ySrc,
wSrc, wSrc,
hSrc, hSrc,
rop); rop);
} }
} }