mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-25 01:57:47 +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 BOOL (WINAPI* MOVEWINDOWPROC)(HWND, int, int, int, int, BOOL);
|
||||||
typedef LRESULT (WINAPI* SENDMESSAGEAPROC)(HWND, UINT, WPARAM, LPARAM);
|
typedef LRESULT (WINAPI* SENDMESSAGEAPROC)(HWND, UINT, WPARAM, LPARAM);
|
||||||
typedef LONG (WINAPI* SETWINDOWLONGAPROC)(HWND, int, LONG);
|
typedef LONG (WINAPI* SETWINDOWLONGAPROC)(HWND, int, LONG);
|
||||||
|
typedef LONG (WINAPI* GETWINDOWLONGAPROC)(HWND, int);
|
||||||
typedef BOOL (WINAPI* ENABLEWINDOWPROC)(HWND, BOOL);
|
typedef BOOL (WINAPI* ENABLEWINDOWPROC)(HWND, BOOL);
|
||||||
typedef HWND (WINAPI* CREATEWINDOWEXAPROC)(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
typedef HWND (WINAPI* CREATEWINDOWEXAPROC)(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
|
||||||
typedef BOOL (WINAPI* DESTROYWINDOWPROC)(HWND);
|
typedef BOOL (WINAPI* DESTROYWINDOWPROC)(HWND);
|
||||||
@ -52,6 +53,7 @@ extern SETWINDOWPOSPROC real_SetWindowPos;
|
|||||||
extern MOVEWINDOWPROC real_MoveWindow;
|
extern MOVEWINDOWPROC real_MoveWindow;
|
||||||
extern SENDMESSAGEAPROC real_SendMessageA;
|
extern SENDMESSAGEAPROC real_SendMessageA;
|
||||||
extern SETWINDOWLONGAPROC real_SetWindowLongA;
|
extern SETWINDOWLONGAPROC real_SetWindowLongA;
|
||||||
|
extern GETWINDOWLONGAPROC real_GetWindowLongA;
|
||||||
extern ENABLEWINDOWPROC real_EnableWindow;
|
extern ENABLEWINDOWPROC real_EnableWindow;
|
||||||
extern CREATEWINDOWEXAPROC real_CreateWindowExA;
|
extern CREATEWINDOWEXAPROC real_CreateWindowExA;
|
||||||
extern DESTROYWINDOWPROC real_DestroyWindow;
|
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);
|
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);
|
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_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_EnableWindow(HWND hWnd, BOOL bEnable);
|
||||||
BOOL WINAPI fake_DestroyWindow(HWND hWnd);
|
BOOL WINAPI fake_DestroyWindow(HWND hWnd);
|
||||||
int WINAPI fake_MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);
|
int WINAPI fake_MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);
|
||||||
|
@ -33,6 +33,7 @@ SETWINDOWPOSPROC real_SetWindowPos = SetWindowPos;
|
|||||||
MOVEWINDOWPROC real_MoveWindow = MoveWindow;
|
MOVEWINDOWPROC real_MoveWindow = MoveWindow;
|
||||||
SENDMESSAGEAPROC real_SendMessageA = SendMessageA;
|
SENDMESSAGEAPROC real_SendMessageA = SendMessageA;
|
||||||
SETWINDOWLONGAPROC real_SetWindowLongA = SetWindowLongA;
|
SETWINDOWLONGAPROC real_SetWindowLongA = SetWindowLongA;
|
||||||
|
GETWINDOWLONGAPROC real_GetWindowLongA = GetWindowLongA;
|
||||||
ENABLEWINDOWPROC real_EnableWindow = EnableWindow;
|
ENABLEWINDOWPROC real_EnableWindow = EnableWindow;
|
||||||
CREATEWINDOWEXAPROC real_CreateWindowExA = CreateWindowExA;
|
CREATEWINDOWEXAPROC real_CreateWindowExA = CreateWindowExA;
|
||||||
DESTROYWINDOWPROC real_DestroyWindow = DestroyWindow;
|
DESTROYWINDOWPROC real_DestroyWindow = DestroyWindow;
|
||||||
@ -66,6 +67,7 @@ static hook_list g_hooks[] =
|
|||||||
{ "MoveWindow", (PROC)fake_MoveWindow, (PROC*)&real_MoveWindow },
|
{ "MoveWindow", (PROC)fake_MoveWindow, (PROC*)&real_MoveWindow },
|
||||||
{ "SendMessageA", (PROC)fake_SendMessageA, (PROC*)&real_SendMessageA },
|
{ "SendMessageA", (PROC)fake_SendMessageA, (PROC*)&real_SendMessageA },
|
||||||
{ "SetWindowLongA", (PROC)fake_SetWindowLongA, (PROC*)&real_SetWindowLongA },
|
{ "SetWindowLongA", (PROC)fake_SetWindowLongA, (PROC*)&real_SetWindowLongA },
|
||||||
|
{ "GetWindowLongA", (PROC)fake_GetWindowLongA, (PROC*)&real_GetWindowLongA },
|
||||||
{ "EnableWindow", (PROC)fake_EnableWindow, (PROC*)&real_EnableWindow },
|
{ "EnableWindow", (PROC)fake_EnableWindow, (PROC*)&real_EnableWindow },
|
||||||
{ "CreateWindowExA", (PROC)fake_CreateWindowExA, (PROC*)&real_CreateWindowExA },
|
{ "CreateWindowExA", (PROC)fake_CreateWindowExA, (PROC*)&real_CreateWindowExA },
|
||||||
{ "DestroyWindow", (PROC)fake_DestroyWindow, (PROC*)&real_DestroyWindow },
|
{ "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)
|
if (dwNewLong == (LONG)compat_WndProc)
|
||||||
{
|
{
|
||||||
LONG result = real_SetWindowLongA(hWnd, nIndex, (LONG)g_compat_wndproc);
|
WNDPROC old = g_ddraw->wndproc = g_compat_wndproc;
|
||||||
g_compat_wndproc = NULL;
|
//g_compat_wndproc = NULL;
|
||||||
return result;
|
return (LONG)old;
|
||||||
}
|
}
|
||||||
else if (!g_compat_wndproc)
|
else
|
||||||
{
|
{
|
||||||
g_compat_wndproc = (WNDPROC)real_SetWindowLongA(hWnd, nIndex, dwNewLong);
|
if (dwNewLong != (LONG)g_ddraw->wndproc)
|
||||||
return g_compat_wndproc ? (LONG)compat_WndProc : 0;
|
{
|
||||||
|
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);
|
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)
|
BOOL WINAPI fake_EnableWindow(HWND hWnd, BOOL bEnable)
|
||||||
{
|
{
|
||||||
if (g_ddraw && g_ddraw->hwnd == hWnd)
|
if (g_ddraw && g_ddraw->hwnd == hWnd)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user