#pragma once #include "SecondaryMouseButtonsHook.h" interface IFancyZonesSettings; interface IZoneWindow; class WindowMoveHandler { public: WindowMoveHandler(const winrt::com_ptr& settings, const std::function& keyUpdateCallback); ~WindowMoveHandler(); bool InMoveSize() const noexcept; bool IsDragEnabled() const 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 MoveWindowIntoZoneByDirectionAndIndex(HWND window, DWORD vkCode, bool cycle, winrt::com_ptr zoneWindow); bool MoveWindowIntoZoneByDirectionAndPosition(HWND window, DWORD vkCode, bool cycle, winrt::com_ptr zoneWindow); private: class WindowMoveHandlerPrivate* pimpl; };