mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
allow to have game window bigger than screen size
This commit is contained in:
parent
8372627b82
commit
aca18912b3
2
ddraw.rc
2
ddraw.rc
@ -4,7 +4,7 @@
|
||||
#define VERSION_MAJOR 5
|
||||
#define VERSION_MINOR 7
|
||||
#define VERSION_BUILD 0
|
||||
#define VERSION_REVISION 0
|
||||
#define VERSION_REVISION 1
|
||||
|
||||
#define VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION
|
||||
#define VERSION_STRING ver_str(VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION)
|
||||
|
16
src/dd.c
16
src/dd.c
@ -719,7 +719,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
|
||||
if (ChangeDisplaySettings(&g_ddraw->render.mode, CDS_TEST) != DISP_CHANGE_SUCCESSFUL)
|
||||
{
|
||||
/* everything failed, use windowed mode instead */
|
||||
/* everything failed, use windowed/borderless mode instead */
|
||||
g_ddraw->render.width = g_ddraw->width;
|
||||
g_ddraw->render.height = g_ddraw->height;
|
||||
|
||||
@ -727,6 +727,20 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.mode.dmPelsHeight = g_ddraw->render.height;
|
||||
|
||||
g_ddraw->windowed = TRUE;
|
||||
|
||||
if (g_ddraw->render.width <= real_GetSystemMetrics(SM_CXSCREEN) &&
|
||||
g_ddraw->render.height <= real_GetSystemMetrics(SM_CYSCREEN))
|
||||
{
|
||||
/* Switch to borderless mode if window fits into screen */
|
||||
g_ddraw->fullscreen = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Make window titlebar visible if window does not fit into screen */
|
||||
g_config.window_rect.left = -32000;
|
||||
g_config.window_rect.top =
|
||||
real_GetSystemMetrics(SM_CYCAPTION) + real_GetSystemMetrics(SM_CYSIZEFRAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,6 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_GETMINMAXINFO:
|
||||
case WM_MOVING:
|
||||
case WM_NCLBUTTONDOWN:
|
||||
case WM_NCLBUTTONUP:
|
||||
@ -51,6 +50,35 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
{
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
case WM_GETMINMAXINFO:
|
||||
{
|
||||
MINMAXINFO* mmi = (MINMAXINFO*)lParam;
|
||||
|
||||
if (g_ddraw->windowed && g_ddraw->width)
|
||||
{
|
||||
RECT rc = { 0, 0, g_ddraw->width, g_ddraw->height };
|
||||
|
||||
AdjustWindowRectEx(
|
||||
&rc,
|
||||
real_GetWindowLongA(g_ddraw->hwnd, GWL_STYLE),
|
||||
GetMenu(g_ddraw->hwnd) != NULL,
|
||||
real_GetWindowLongA(g_ddraw->hwnd, GWL_EXSTYLE));
|
||||
|
||||
// set minimum window size
|
||||
//mmi->ptMinTrackSize.x = rc.right - rc.left;
|
||||
//mmi->ptMinTrackSize.y = rc.bottom - rc.top;
|
||||
|
||||
if (mmi->ptMaxTrackSize.x < rc.right - rc.left)
|
||||
mmi->ptMaxTrackSize.x = rc.right - rc.left;
|
||||
|
||||
if (mmi->ptMaxTrackSize.y < rc.bottom - rc.top)
|
||||
mmi->ptMaxTrackSize.y = rc.bottom - rc.top;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
case WM_NCACTIVATE:
|
||||
{
|
||||
if (g_ddraw->noactivateapp)
|
||||
|
Loading…
x
Reference in New Issue
Block a user