Функция 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;
}
Эта функция очень полезна, если Вам нужно гарантировать, что ввод будет завершен. Например, Вы рисуете линию и после установки первой точки лучше ограничить область ввода экраном программы. Так же удобно применять этот метод при вводе паролей.