diff --git a/source/Platform/Win32/Win32Display.cpp b/source/Platform/Win32/Win32Display.cpp index c24b61a..8d23e8b 100644 --- a/source/Platform/Win32/Win32Display.cpp +++ b/source/Platform/Win32/Win32Display.cpp @@ -127,6 +127,18 @@ void Win32Display::showCursor(bool value) ::SetCursor(m_cursor); } +void Win32Display::grabCursor(bool value) +{ + if (value) { + RECT rect; + GetClientRect(m_handle, &rect); + MapWindowPoints(m_handle, NULL, reinterpret_cast(&rect), 2); + ClipCursor(&rect); + } else { + ClipCursor(NULL); + } +} + void Win32Display::setIcon(unsigned int width, unsigned int height, const uint8_t *pixels) { ::HDC hdc; diff --git a/source/Platform/Win32/Win32Display.h b/source/Platform/Win32/Win32Display.h index d022da1..83f7dda 100644 --- a/source/Platform/Win32/Win32Display.h +++ b/source/Platform/Win32/Win32Display.h @@ -35,6 +35,8 @@ public : virtual void showCursor(bool value); + virtual void grabCursor(bool value); + protected : void registerClass();