LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (ImGui_ImplDX9_WndProcHandler(hWnd, msg, wParam, lParam)) return true; switch (msg) { case WM_SIZE: if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) { ImGui_ImplDX9_InvalidateDeviceObjects(); g_d3dpp.BackBufferWidth = LOWORD(lParam); g_d3dpp.BackBufferHeight = HIWORD(lParam); HRESULT hr = g_pd3dDevice->Reset(&g_d3dpp); if (hr == D3DERR_INVALIDCALL) IM_ASSERT(0); ImGui_ImplDX9_CreateDeviceObjects(); } return 0; case WM_SYSCOMMAND: if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu return 0; break; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); }
LRESULT WINAPI DetourDefWindowProc( _In_ HWND hWnd, _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { static boost::once_flag flag = BOOST_ONCE_INIT; boost::call_once(flag, boost::bind(&logOnce, "++ USER32!DefWindowProc called")); if (!g_hWnd) { g_hWnd = hWnd; } ImGui_ImplDX9_WndProcHandler(hWnd, Msg, wParam, lParam); ImGui_ImplDX10_WndProcHandler(hWnd, Msg, wParam, lParam); ImGui_ImplDX11_WndProcHandler(hWnd, Msg, wParam, lParam); return OriginalDefWindowProc(hWnd, Msg, wParam, lParam); }
LRESULT __stdcall Hooks::WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_LBUTTONDOWN: G::PressedKeys[ VK_LBUTTON ] = true; break; case WM_LBUTTONUP: G::PressedKeys[ VK_LBUTTON ] = false; break; case WM_RBUTTONDOWN: G::PressedKeys[ VK_RBUTTON ] = true; break; case WM_RBUTTONUP: G::PressedKeys[ VK_RBUTTON ] = false; break; case WM_MBUTTONDOWN: G::PressedKeys[ VK_MBUTTON ] = true; break; case WM_MBUTTONUP: G::PressedKeys[ VK_MBUTTON ] = false; break; case WM_XBUTTONDOWN: { UINT button = GET_XBUTTON_WPARAM( wParam ); if( button == XBUTTON1 ) { G::PressedKeys[ VK_XBUTTON1 ] = true; } else if( button == XBUTTON2 ) { G::PressedKeys[ VK_XBUTTON2 ] = true; } break; } case WM_XBUTTONUP: { UINT button = GET_XBUTTON_WPARAM( wParam ); if( button == XBUTTON1 ) { G::PressedKeys[ VK_XBUTTON1 ] = false; } else if( button == XBUTTON2 ) { G::PressedKeys[ VK_XBUTTON2 ] = false; } break; } case WM_KEYDOWN: G::PressedKeys[ wParam ] = true; break; case WM_KEYUP: G::PressedKeys[ wParam ] = false; break; case WM_SYSKEYDOWN: if (wParam == VK_MENU) G::PressedKeys[VK_MENU] = true; break; case WM_SYSKEYUP: if (wParam == VK_MENU) G::PressedKeys[VK_MENU] = false; break; default: break; } OpenMenu(); if( G::d3dinit && Vars.Menu.Opened && ImGui_ImplDX9_WndProcHandler( hWnd, uMsg, wParam, lParam ) ) return true; return CallWindowProc( oldWindowProc, hWnd, uMsg, wParam, lParam ); }