#pragma once interface IFancyZonesSettings; interface IZoneWindow; interface SecondaryMouseButtonsHook; class WindowMoveHandler { public: WindowMoveHandler(const winrt::com_ptr& settings, SecondaryMouseButtonsHook* mouseHook); ~WindowMoveHandler(); bool InMoveSize() const noexcept; bool IsDragEnabled() const noexcept; void OnMouseDown() noexcept; void MoveSizeStart(HWND window, HMONITOR monitor, POINT const& ptScreen, const std::unordered_map>& zoneWindowMap) noexcept; void MoveSizeUpdate(HMONITOR monitor, POINT const& ptScreen, const std::unordered_map>& zoneWindowMap) noexcept; void MoveSizeEnd(HWND window, POINT const& ptScreen, const std::unordered_map>& zoneWindowMap) noexcept; void MoveWindowIntoZoneByIndexSet(HWND window, const std::vector& indexSet, winrt::com_ptr zoneWindow) noexcept; bool MoveWindowIntoZoneByDirection(HWND window, DWORD vkCode, bool cycle, winrt::com_ptr zoneWindow); private: class WindowMoveHandlerPrivate* pimpl; };