Вопрос по WinAPI: Как ограничить перемещение курсора мыши областью открытого окна?
Столкнулся с проблемой: при выполнении программы, мне необходимо, чтобы курсор рандомно менял свое местоположение при нажатии клавиш, что главное, в ПРЕДЕЛАХ ОБЛАСТИ ОКНА, однако курсор все равно появляется, там, где ему захочется(изредка попадает в пределы окна). Это не смотря на то, что используется функция ScreenToClient(), которая должна решать эту проблему, но, почему-то, она ее не решает. Прилагаю часть кода и скрин самого окна.
case WM_CHAR:
//перемещение курсора
srand(time(NULL));
POINT lpPoint;
do {
lpPoint.x = rand();
} while (lpPoint.x > GetSystemMetrics(SM_CXSCREEN));
do {
lpPoint.y = rand();
} while (lpPoint.y > GetSystemMetrics(SM_CYSCREEN));
ScreenToClient(hWnd, (LPPOINT)&lpPoint);
SetCursorPos(lpPoint.x, lpPoint.y);
break;
Ответы (1 шт):
Автор решения: Cppeshnik
→ Ссылка
Оставлю код:
//код...
GetWindowRect(hWnd,&rc);
ClipCursor(&rc);
//код...
Возможно он вам поможет. Функция Clipcursor ограничивает мышь в определённой области, поэтому аккуратней с ней.
Для того чтобы остановить ограничение мыши надо вызвать эту функцию с параметром NULL
ClipCursor(NULL);
