Читать книгу Delphi. Трюки и эффекты - Александр Чиртик - Страница 36

Глава 3
Мышь и клавиатура
3.1. Мышь
Ограничение перемещения указателя

Оглавление

При помощи несложных манипуляций можно также ограничить перемещение указателя мыши определенной областью экрана (прямоугольником). Для этого используется API-функция ClipCursor. Она принимает в качестве параметра структуру TRect с координатами прямоугольника, в пределах которого может перемещаться указатель, и в случае успешной установки ограничения возвращает отличное от нуля значение.

С ClipCursor тесно связана функция GetClipCursor, позволяющая получить координаты прямоугольника, которым в данный момент ограничено перемещение указателя.

Использование функций ClipCursor и GetClipCursor приведено в листинге 3.6.

Листинг 3.6. Ограничение перемещения указателя

var

lastRect: TRect;

cursorClipped: Boolean = False;

procedure SetCursorRect(newRect: TRect);

begin

if not cursorClipped then

begin

//Сохраняем старую область перемещения указателя

GetClipCursor(lastRect);

//Устанавливаем ограничение на перемещения указателя

cursorClipped := ClipCursor(Addr(newRect)) <> False;

end;

end;

procedure RestoreCursorRect();

begin

if cursorClipped then

begin

//Восстанавливаем область перемещения указателя

cursorClipped := ClipCursor(Addr(lastRect)) = False;

end;

end;

Здесь реализована пара процедур, первая из которых (SetCursorRect) ограничивает перемещение указателя мыши заданной областью экрана (параметр newRect). Перед ограничением на перемещение указателя в процедуре SetCursorRect происходит сохранение области перемещения, установленной ранее, чтобы действие процедуры можно было отменить. Для отмены ограничения перемещения указателя служит вторая процедура – RestoreCursorRect.

Примечание

Вообще, задание ограничения на перемещение указателя мыши не считается хорошим тоном. Потому для использования такой возможности в реальном приложении должны быть действительно веские причины.

Delphi. Трюки и эффекты

Подняться наверх