Ich bin leider nicht bei Codeproject angemeldet und kann daher den Source nicht ansehen. Aber mit Delphi geht das einfach (schöner geht's immer):
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
GridSize = 10;
var
NewPos : TPoint;
Changed : boolean;
begin
NewPos := Point(X, Y);
if (X mod GridSize <> 0) then
begin
if (X mod GridSize) > GridSize div 2 then
NewPos.X := X + GridSize - (X mod GridSize)
else
NewPos.X := X - (X mod GridSize);
Changed := True;
end;
if (Y mod GridSize <> 0) then
begin
if (Y mod GridSize) > GridSize div 2 then
NewPos.Y := Y + GridSize - (Y mod GridSize)
else
NewPos.Y := Y - (Y mod GridSize);
Changed := True;
end;
if Changed then
begin
NewPos := ClientToScreen(NewPos);
Mouse.CursorPos := NewPos;
end;
Label1.Caption := Format('%d/%d', [NewPos.X, NewPos.Y]);