LINUX.ORG.RU

Как правильно получить позицию мыши?


0

0

нужно каждый кадр поворачивать камеру, если двинулась мыш. Делаю так:

Mouse:=GetWorldMousePos; ShiftX:=Mouse.X-Center.X; ShiftY:=Mouse.Y-Center.Y; SetWorldMousePos(Center.X,Center.Y);

Если Center находится за пределами окна, то все ништяк. Но если перенести Center в центр окна(где ему самое место), то мышка перестает работать. ДЛя того, чтобы ShuftX/YT стал отличным от 0, нужно дергать мышь очень сильно. Да и то срабатывает через раз. С чем это может быть связано? Видимо я не правильно понял, как работать с XQueryPointer У окна событие POinterMotion отключено.

Procedure SetWorldMousePos(X,Y:integer); begin XWarpPointer(hXDisplay,0, hXWindow,0,0,0,0,X-WndX,Y-WndY); end;

Function GetWorldMousePos:TPoint; var w1,w2:TWindow; rx,ry,m:integer; begin XQueryPointer(hXDisplay,hXWindow,@w1,@w2,@rx,@ry,@XMousePos.X,@XMousePos.Y,@m); Result.X:=rx; Result.Y:=ry; end;

anonymous

Прошу прощения за кривое форматирование, еще не совсем привык к этому форуму.

anonymous
()
Ответ на: комментарий от vilfred

К сожаленнию я не поставляюсь вместе с проектом к пользователям... Да и боюсь моих способноестей не хватит, чтобы 200 раз в секунду замерять это расстояние и передавать результат на обработку. :((

З.Ы. Вы не оригинальны, линецку уже предлагали.

anonymous
()
Ответ на: комментарий от bugmaker

C++ я знаю, и сейчас веду проект на нем. это сути не меняет. Неужели проблема в том, что код не Сишный? :) Почему то мне кажется, что если тоже самое написать на С++, то и результат будет тотже.

anonymous
()
Ответ на: комментарий от anonymous

Сделай так: if (NewX<>OldX) or (NewY<>OldY) then SetNewMousePOs;

XQueryPointer может тормозить с обработкой.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.