1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

re-enable maximize button

This commit is contained in:
FunkyFr3sh 2021-02-18 07:10:15 +01:00
parent 2d1b967630
commit e34cd3b5e2
4 changed files with 48 additions and 32 deletions

View File

@ -11,6 +11,7 @@
void util_limit_game_ticks();
void util_update_bnet_pos(int newX, int newY);
BOOL util_get_lowest_resolution(float ratio, SIZE* outRes, DWORD minWidth, DWORD minHeight, DWORD maxWidth, DWORD maxHeight);
void util_toggle_maximize();
void util_toggle_fullscreen();
BOOL util_unadjust_window_rect(LPRECT prc, DWORD dwStyle, BOOL fMenu, DWORD dwExStyle);
void util_set_window_rect(int x, int y, int width, int height, UINT flags);

View File

@ -542,7 +542,7 @@ HRESULT dd_SetDisplayMode(DWORD width, DWORD height, DWORD bpp)
}
else
{
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, (GetWindowLong(g_ddraw->hwnd, GWL_STYLE) | WS_OVERLAPPEDWINDOW) & ~WS_MAXIMIZEBOX);
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, (GetWindowLong(g_ddraw->hwnd, GWL_STYLE) | WS_OVERLAPPEDWINDOW));// &~WS_MAXIMIZEBOX);
}
if (g_ddraw->wine)

View File

@ -185,6 +185,40 @@ BOOL util_get_lowest_resolution(float ratio, SIZE *out_res, DWORD min_width, DWO
return result;
}
void util_toggle_maximize()
{
RECT work_rc;
RECT client_rc;
if (real_GetClientRect(g_ddraw->hwnd, &client_rc) &&
SystemParametersInfo(SPI_GETWORKAREA, 0, &work_rc, 0))
{
if (client_rc.right != g_ddraw->width || client_rc.bottom != g_ddraw->height)
{
util_set_window_rect(
(work_rc.right / 2) - (g_ddraw->width / 2),
(work_rc.bottom / 2) - (g_ddraw->height / 2),
g_ddraw->width,
g_ddraw->height,
0);
}
else if (
util_unadjust_window_rect(
&work_rc,
GetWindowLong(g_ddraw->hwnd, GWL_STYLE),
FALSE,
GetWindowLong(g_ddraw->hwnd, GWL_EXSTYLE)))
{
util_set_window_rect(
work_rc.left,
work_rc.top,
work_rc.right - work_rc.left,
work_rc.bottom - work_rc.top,
0);
}
}
}
void util_toggle_fullscreen()
{
if (g_ddraw->bnet_active)

View File

@ -377,8 +377,18 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
return DefWindowProc(hWnd, uMsg, wParam, lParam); /* Carmageddon fix */
}
/* C&C and RA really don't want to close down */
case WM_SYSCOMMAND:
if (wParam == SC_MAXIMIZE)
{
if (g_ddraw->resizable)
{
util_toggle_maximize();
}
return 0;
}
if (wParam == SC_CLOSE && !GameHandlesClose)
{
exit(0);
@ -487,36 +497,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
{
if (g_ddraw->resizable)
{
RECT work_rc;
RECT client_rc;
if (real_GetClientRect(g_ddraw->hwnd, &client_rc) &&
SystemParametersInfo(SPI_GETWORKAREA, 0, &work_rc, 0))
{
if (client_rc.right != g_ddraw->width || client_rc.bottom != g_ddraw->height)
{
util_set_window_rect(
(work_rc.right / 2) - (g_ddraw->width / 2),
(work_rc.bottom / 2) - (g_ddraw->height / 2),
g_ddraw->width,
g_ddraw->height,
0);
}
else if (
util_unadjust_window_rect(
&work_rc,
GetWindowLong(g_ddraw->hwnd, GWL_STYLE),
FALSE,
GetWindowLong(g_ddraw->hwnd, GWL_EXSTYLE)))
{
util_set_window_rect(
work_rc.left,
work_rc.top,
work_rc.right - work_rc.left,
work_rc.bottom - work_rc.top,
0);
}
}
util_toggle_maximize();
}
return 0;