СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как сделать, чтобы курсор мыши при ее движении перемещался не через 1 пиксел, как обычно, а через 5 пикселов?

Ответ

Если в пределах формы:

var MP: TPoint;
MMPar: Integer;
procedure TForm1.FormMouseMove(Sender: TObject;
Shift: TShiftState;
X, Y: Integer);
var P: TPoint;
dx, dy: Integer;
begin if MMPar = 0 then begin MMPar := 1;
Exit;
end;
MMPar := 0;
dx := 5;
dy := 5;
GetCursorPos(P);
if P.X < MP.X then dx := -dx else if P.X = MP.X then dx := 0;
if P.Y < MP.Y then dy := -dy else if P.Y = MP.Y then dy := 0;
P.X := P.X + dx;
P.Y := P.Y + dy;
SetCursorPos(P.X, P.Y);
MP := P;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin GetCursorPos(MP);
MMPar := 0;
end;


Если на форме есть другие компоненты, то для них тоже надо обрабатывать OnMouseMove. Если же надо перемещать таким образом курсор по всему экрану, то тут надо ставить ловушку на мышь (функция SetWindowsHookEx с параметром WH_MOUSE). Это намного труднее и, скорее всего, понадобится создавать DLL.

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация