Функция ClipCursor() устанавливает область передвижения курсора:
BOOL ClipCursor ( CONST RECT *lpRect // ограничивающий прямоугольник );
Эта функция также запрещает перемещать курсор за пределы области функцией SetCursorPos(). Даже, если это произойдет курсор немедленно вернется в заданную область. Следует отметить, что установка области курсора влияет на все программы, а не только на ту, которая вызвала ClipCursor(). Если функция успешна, то она возвращает ненулевое значение.
Вторая функция GetClipCursor() получает область передвижения курсора:
BOOL GetClipCursor ( LPRECT lpRect // область ограничения курсора );
Если функция успешна, то она возвращает ненулевое значение. Посмотрите на пример ниже. Если Вы его запустите на выполнение, то курсор будет некоторое время находиться в правом верхнем углу экрана и Вы его оттуда не выгоните:
// TestAPI.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" #include "iostream.h" void main() { RECT r1; RECT r2; if (GetClipCursor(&r1)) { SetRect(&r2,1,1,50,50); if (ClipCursor(&r2)) { cout << "Clip Cursor" << endl; Sleep(10000); ClipCursor(&r1); } else cout << "Error Clip Cursor" << endl; } else cout << "Error GetClipCursor " << endl; }
Эта функция очень полезна, если Вам нужно гарантировать, что ввод будет завершен. Например, Вы рисуете линию и после установки первой точки лучше ограничить область ввода экраном программы. Так же удобно применять этот метод при вводе паролей.