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

support boxing/maintas on maxmize button click

This commit is contained in:
FunkyFr3sh 2021-07-03 16:54:15 +02:00
parent 8f5a11dd8c
commit 87da2e7a34

View File

@ -193,35 +193,83 @@ BOOL util_get_lowest_resolution(
void util_toggle_maximize() void util_toggle_maximize()
{ {
RECT work_rc;
RECT client_rc; RECT client_rc;
RECT dst_rc;
if (real_GetClientRect(g_ddraw->hwnd, &client_rc) && LONG style = GetWindowLong(g_ddraw->hwnd, GWL_STYLE);
SystemParametersInfo(SPI_GETWORKAREA, 0, &work_rc, 0)) LONG exstyle = GetWindowLong(g_ddraw->hwnd, GWL_EXSTYLE);
if (real_GetClientRect(g_ddraw->hwnd, &client_rc) && SystemParametersInfo(SPI_GETWORKAREA, 0, &dst_rc, 0))
{ {
int width = (dst_rc.right - dst_rc.left);
int height = (dst_rc.bottom - dst_rc.top);
int x = dst_rc.left;
int y = dst_rc.top;
if (client_rc.right != g_ddraw->width || client_rc.bottom != g_ddraw->height) if (client_rc.right != g_ddraw->width || client_rc.bottom != g_ddraw->height)
{ {
util_set_window_rect( dst_rc.left = 0;
(work_rc.right / 2) - (g_ddraw->width / 2), dst_rc.top = 0;
(work_rc.bottom / 2) - (g_ddraw->height / 2), dst_rc.right = g_ddraw->width;
g_ddraw->width, dst_rc.bottom = g_ddraw->height;
g_ddraw->height,
0); AdjustWindowRectEx(&dst_rc, style, FALSE, exstyle);
} }
else if ( else if (g_ddraw->boxing)
util_unadjust_window_rect(
&work_rc,
GetWindowLong(g_ddraw->hwnd, GWL_STYLE),
FALSE,
GetWindowLong(g_ddraw->hwnd, GWL_EXSTYLE)))
{ {
util_set_window_rect( dst_rc.left = 0;
work_rc.left, dst_rc.top = 0;
work_rc.top, dst_rc.right = g_ddraw->width;
work_rc.right - work_rc.left, dst_rc.bottom = g_ddraw->height;
work_rc.bottom - work_rc.top,
0); for (int i = 20; i-- > 1;)
{
if (width >= g_ddraw->width * i && height - 20 >= g_ddraw->height * i)
{
dst_rc.right = g_ddraw->width * i;
dst_rc.bottom = g_ddraw->height * i;
break;
}
}
AdjustWindowRectEx(&dst_rc, style, FALSE, exstyle);
} }
else if (g_ddraw->maintas)
{
util_unadjust_window_rect(&dst_rc, style, FALSE, exstyle);
int w = dst_rc.right - dst_rc.left;
int h = dst_rc.bottom - dst_rc.top;
dst_rc.top = 0;
dst_rc.left = 0;
dst_rc.right = w;
dst_rc.bottom = (LONG)(((float)g_ddraw->height / g_ddraw->width) * w);
if (dst_rc.bottom > h)
{
dst_rc.right = (LONG)(((float)dst_rc.right / dst_rc.bottom) * h);
dst_rc.bottom = h;
}
AdjustWindowRectEx(&dst_rc, style, FALSE, exstyle);
}
RECT pos_rc;
pos_rc.left = (width / 2) - ((dst_rc.right - dst_rc.left) / 2) + x;
pos_rc.top = (height / 2) - ((dst_rc.bottom - dst_rc.top) / 2) + y;
pos_rc.right = (dst_rc.right - dst_rc.left);
pos_rc.bottom = (dst_rc.bottom - dst_rc.top);
util_unadjust_window_rect(&pos_rc, style, FALSE, exstyle);
util_unadjust_window_rect(&dst_rc, style, FALSE, exstyle);
util_set_window_rect(
pos_rc.left,
pos_rc.top,
dst_rc.right - dst_rc.left,
dst_rc.bottom - dst_rc.top,
0);
} }
} }