Вопрос по 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);
→ Ссылка