mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
add new .ini settings fixwndprochook
This commit is contained in:
parent
7a7b84088f
commit
96714b01c0
1
inc/dd.h
1
inc/dd.h
@ -111,6 +111,7 @@ typedef struct cnc_ddraw
|
||||
BOOL nonexclusive;
|
||||
BOOL fixpitch;
|
||||
BOOL fixchildwindows;
|
||||
BOOL fixwndprochook;
|
||||
BOOL d3d9linear;
|
||||
BOOL backbuffer;
|
||||
BOOL passthrough;
|
||||
|
@ -50,6 +50,7 @@ void cfg_load()
|
||||
g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE);
|
||||
g_ddraw->fixpitch = cfg_get_bool("fixpitch", FALSE);
|
||||
g_ddraw->fixchildwindows = cfg_get_bool("fixchildwindows", TRUE);
|
||||
g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE);
|
||||
g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE);
|
||||
g_ddraw->backbuffer = cfg_get_bool("backbuffer", TRUE);
|
||||
g_ddraw->passthrough = cfg_get_bool("passthrough", TRUE);
|
||||
|
@ -288,10 +288,34 @@ LRESULT WINAPI fake_SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPar
|
||||
return result;
|
||||
}
|
||||
|
||||
static WNDPROC g_compat_wndproc;
|
||||
LRESULT CALLBACK compat_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return CallWindowProcA(g_compat_wndproc, hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
LONG WINAPI fake_SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
|
||||
{
|
||||
if (g_ddraw && g_ddraw->hwnd == hWnd && nIndex == GWL_STYLE)
|
||||
return 0;
|
||||
if (g_ddraw && g_ddraw->hwnd == hWnd)
|
||||
{
|
||||
if (nIndex == GWL_STYLE)
|
||||
return 0;
|
||||
|
||||
if (nIndex == GWL_WNDPROC && g_ddraw->fixwndprochook)
|
||||
{
|
||||
if (dwNewLong == (LONG)compat_WndProc)
|
||||
{
|
||||
LONG result = real_SetWindowLongA(hWnd, nIndex, (LONG)g_compat_wndproc);
|
||||
g_compat_wndproc = NULL;
|
||||
return result;
|
||||
}
|
||||
else if (!g_compat_wndproc)
|
||||
{
|
||||
g_compat_wndproc = (WNDPROC)real_SetWindowLongA(hWnd, nIndex, dwNewLong);
|
||||
return g_compat_wndproc ? (LONG)compat_WndProc : 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return real_SetWindowLongA(hWnd, nIndex, dwNewLong);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user