(Общие вопросы) Как ограничить перемещение курсора заданной областью?
Вопрос: (Общие вопросы) Как ограничить перемещение курсора заданной областью?
Ответ:
Иногда вам может потребоваться органичение перемещения курсора мыши заданой прямоугольной областью. Рассмотрим, как это делается, на примере формы (Form1), а далее вы сможете переделать данный код так, как вам необходимо.
Добавьте в заголовочный файл формы в секцию private два следующих объявления:
TCursor FCursor;
bool FFlag;
А в cpp-файле напишите три следующих обработчика:
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(FFlag)
{
if(Mouse->CursorPos.x
<= (Left + 50))
SetCursorPos((Left
+ 50), Mouse->CursorPos.y);
if(Mouse->CursorPos.x
>= (Left + Width - 50))
SetCursorPos((Left
+ Width - 50), Mouse->CursorPos.y);
if(Mouse->CursorPos.y
<= (Top + 50))
SetCursorPos(Mouse->CursorPos.x,
(Top + 50));
if(Mouse->CursorPos.y
>= (Top + Height - 50))
SetCursorPos(Mouse->CursorPos.x,
(Top + Height - 50));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
FFlag = true;
FCursor = Cursor;
Screen->Cursor = crDrag;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
FFlag = false;
Screen->Cursor = FCursor;
}
//---------------------------------------------------------------------------
Теперь область перемещения курсора внутри формы при
удерживаемой нажатой кнопке мыши будет на 50 пикселей меньше относительно
каждой из границ формы, то есть, вы не сможете переместить курсор при
нажатой кнопке мыше к краю формы ближе, чем на 50 пикселей.Информаци о записи: (Общие вопросы) Как ограничить перемещение курсора заданной областью?
DeVoid |
http://devoid.com.ua/ |
26 Августа 2007
Не менее интересно
- (Общие вопросы) Можно ли узнать, есть ли на чужой форме кнопка с определенным названием ?
- (Графика) Как заполнить канву формы фоном рабочего стола ?
- (Графика) Закрасить монитор по пикселу ?
- (Графика) Быстро cделать рисунок TBitmap монохромным ?
- (Графика) Как рисовать на десктопе ?
- (Система) Как узнать папку Windows?
- (Система) Как изменить раскладку клавиатуры ?
- (Система) Вызов стандартного системного окна "О Программе"
- (Система) Как получить информацию о файле ? (дата создания и т.д.)
- (Система) Поменять разрешение экрана ?


