#pragma once #include #include // Returns RECT with positions of the minmize/maximize buttons of the given window. // Does not always work, since some apps draw custom toolbars. std::optional get_button_pos(HWND hwnd); // Gets position of given window. std::optional get_window_pos(HWND hwnd); // Gets mouse postion. std::optional get_mouse_pos(); // Calculate sizes int width(const RECT& rect); int height(const RECT& rect); // Compare rects bool operator<(const RECT& lhs, const RECT& rhs); // Moves and/or resizes small_rect to fit inside big_rect. RECT keep_rect_inside_rect(const RECT& small_rect, const RECT& big_rect); // Initializes and runs windows message loop int run_message_loop(); void show_last_error_message(LPCWSTR lpszFunction, DWORD dw); enum WindowState { UNKNONW, MINIMIZED, MAXIMIZED, SNAPED_TOP_LEFT, SNAPED_LEFT, SNAPED_BOTTOM_LEFT, SNAPED_TOP_RIGHT, SNAPED_RIGHT, SNAPED_BOTTOM_RIGHT, RESTORED }; WindowState get_window_state(HWND hwnd);