mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
make fixwndprochook useful for other games as well
This commit is contained in:
parent
1c8a793e29
commit
50e6cf7534
@ -25,6 +25,7 @@ typedef BOOL (WINAPI* SETWINDOWPOSPROC)(HWND, HWND, int, int, int, int, UINT);
|
||||
typedef BOOL (WINAPI* MOVEWINDOWPROC)(HWND, int, int, int, int, BOOL);
|
||||
typedef LRESULT (WINAPI* SENDMESSAGEAPROC)(HWND, UINT, WPARAM, LPARAM);
|
||||
typedef LONG (WINAPI* SETWINDOWLONGAPROC)(HWND, int, LONG);
|
||||
typedef LONG (WINAPI* GETWINDOWLONGAPROC)(HWND, int);
|
||||
typedef BOOL (WINAPI* ENABLEWINDOWPROC)(HWND, BOOL);
|
||||
typedef HWND (WINAPI* CREATEWINDOWEXAPROC)(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
||||
typedef BOOL (WINAPI* DESTROYWINDOWPROC)(HWND);
|
||||
@ -52,6 +53,7 @@ extern SETWINDOWPOSPROC real_SetWindowPos;
|
||||
extern MOVEWINDOWPROC real_MoveWindow;
|
||||
extern SENDMESSAGEAPROC real_SendMessageA;
|
||||
extern SETWINDOWLONGAPROC real_SetWindowLongA;
|
||||
extern GETWINDOWLONGAPROC real_GetWindowLongA;
|
||||
extern ENABLEWINDOWPROC real_EnableWindow;
|
||||
extern CREATEWINDOWEXAPROC real_CreateWindowExA;
|
||||
extern DESTROYWINDOWPROC real_DestroyWindow;
|
||||
|
@ -22,6 +22,7 @@ BOOL WINAPI fake_SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int
|
||||
BOOL WINAPI fake_MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
|
||||
LRESULT WINAPI fake_SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
||||
LONG WINAPI fake_SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong);
|
||||
LONG WINAPI fake_GetWindowLongA(HWND hWnd, int nIndex);
|
||||
BOOL WINAPI fake_EnableWindow(HWND hWnd, BOOL bEnable);
|
||||
BOOL WINAPI fake_DestroyWindow(HWND hWnd);
|
||||
int WINAPI fake_MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);
|
||||
|
@ -33,6 +33,7 @@ SETWINDOWPOSPROC real_SetWindowPos = SetWindowPos;
|
||||
MOVEWINDOWPROC real_MoveWindow = MoveWindow;
|
||||
SENDMESSAGEAPROC real_SendMessageA = SendMessageA;
|
||||
SETWINDOWLONGAPROC real_SetWindowLongA = SetWindowLongA;
|
||||
GETWINDOWLONGAPROC real_GetWindowLongA = GetWindowLongA;
|
||||
ENABLEWINDOWPROC real_EnableWindow = EnableWindow;
|
||||
CREATEWINDOWEXAPROC real_CreateWindowExA = CreateWindowExA;
|
||||
DESTROYWINDOWPROC real_DestroyWindow = DestroyWindow;
|
||||
@ -66,6 +67,7 @@ static hook_list g_hooks[] =
|
||||
{ "MoveWindow", (PROC)fake_MoveWindow, (PROC*)&real_MoveWindow },
|
||||
{ "SendMessageA", (PROC)fake_SendMessageA, (PROC*)&real_SendMessageA },
|
||||
{ "SetWindowLongA", (PROC)fake_SetWindowLongA, (PROC*)&real_SetWindowLongA },
|
||||
{ "GetWindowLongA", (PROC)fake_GetWindowLongA, (PROC*)&real_GetWindowLongA },
|
||||
{ "EnableWindow", (PROC)fake_EnableWindow, (PROC*)&real_EnableWindow },
|
||||
{ "CreateWindowExA", (PROC)fake_CreateWindowExA, (PROC*)&real_CreateWindowExA },
|
||||
{ "DestroyWindow", (PROC)fake_DestroyWindow, (PROC*)&real_DestroyWindow },
|
||||
|
@ -306,14 +306,19 @@ LONG WINAPI fake_SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
|
||||
{
|
||||
if (dwNewLong == (LONG)compat_WndProc)
|
||||
{
|
||||
LONG result = real_SetWindowLongA(hWnd, nIndex, (LONG)g_compat_wndproc);
|
||||
g_compat_wndproc = NULL;
|
||||
return result;
|
||||
WNDPROC old = g_ddraw->wndproc = g_compat_wndproc;
|
||||
//g_compat_wndproc = NULL;
|
||||
return (LONG)old;
|
||||
}
|
||||
else if (!g_compat_wndproc)
|
||||
else
|
||||
{
|
||||
g_compat_wndproc = (WNDPROC)real_SetWindowLongA(hWnd, nIndex, dwNewLong);
|
||||
return g_compat_wndproc ? (LONG)compat_WndProc : 0;
|
||||
if (dwNewLong != (LONG)g_ddraw->wndproc)
|
||||
{
|
||||
g_compat_wndproc = g_ddraw->wndproc;
|
||||
g_ddraw->wndproc = (WNDPROC)dwNewLong;
|
||||
}
|
||||
|
||||
return (LONG)compat_WndProc;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -321,6 +326,19 @@ LONG WINAPI fake_SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
|
||||
return real_SetWindowLongA(hWnd, nIndex, dwNewLong);
|
||||
}
|
||||
|
||||
LONG WINAPI fake_GetWindowLongA(HWND hWnd, int nIndex)
|
||||
{
|
||||
if (g_ddraw && g_ddraw->hwnd == hWnd)
|
||||
{
|
||||
if (nIndex == GWL_WNDPROC && g_ddraw->fixwndprochook)
|
||||
{
|
||||
return (LONG)compat_WndProc;
|
||||
}
|
||||
}
|
||||
|
||||
return real_GetWindowLongA(hWnd, nIndex);
|
||||
}
|
||||
|
||||
BOOL WINAPI fake_EnableWindow(HWND hWnd, BOOL bEnable)
|
||||
{
|
||||
if (g_ddraw && g_ddraw->hwnd == hWnd)
|
||||
|
Loading…
x
Reference in New Issue
Block a user