Шаг 88 - ClipCursor() и GetClipCursor()

Функция 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;
}

Эта функция очень полезна, если Вам нужно гарантировать, что ввод будет завершен. Например, Вы рисуете линию и после установки первой точки лучше ограничить область ввода экраном программы. Так же удобно применять этот метод при вводе паролей.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.