Code:
WNDPROC g_gameWndProc;
{ // In your hook function
g_gameWndProc = ( WNDPROC )SetWindowLongA( GAME_HWND, GWL_WNDPROC, ( LONG )WindowProc );
}
{ // In your unhook function
SetWindowLongA( GAME_HWND, GWL_WNDPROC, ( LONG )g_gameWndProc );
}
LRESULT CALLBACK WindowProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
tagMSG msg = { hWnd, Msg, wParam, lParam };
if ( g_pInput->ProcessMessage( msg ) ) // This is my message handler
return NULL;
return CallWindowProc( g_gameWndProc, hWnd, Msg, wParam, lParam );
}
That's how I do it, hf.