Эквивалент GetCursorPos() в Mac Carbon

Предыстория Мы переносим наши игры на основе PythonOgre на Mac, и издатели требуют, чтобы мышь могла покинуть окно. В Windows мы используем OIS (объектно-ориентированную систему ввода) для управления мышью; то есть мы не позволяем OIS удерживать мышь внутри границ окна, а затем отслеживать курсор мыши в экранных координатах с помощью GetCursorPos() Win32 API.

Мы не можем тривиально модифицировать цикл Ogre3d — для этого потребуется как минимум пересборка библиотеки, плюс пересборка оболочки, которая легко может занять целый рабочий день на нашей сборочной машине. Теоретически мы могли бы модифицировать OIS, но у нас плотный график, поэтому по тем же причинам мы не хотели бы играть с ним без необходимости.

Вопрос Что такое Carbon API для получения координат курсора мыши в экранном пространстве, эквивалентный Windows API GetCursorPos()?


person Ivan Vučica    schedule 13.10.2009    source источник


Ответы (1)


Я считаю, что вы ищете GetMouse(). Пример можно найти в примере кода UIElementInspector от Apple. Однако это в Obj-C, а не в Python.

РЕДАКТИРОВАТЬ: HIGetMousePosition() является предпочтительным методом, согласно NSD.

person Community    schedule 13.10.2009
comment
GetMouse() не имеет ничего общего с Objective-C, поскольку он существует на несколько лет раньше. Его первоначальной реализацией был бы Паскаль. Во всяком случае, HIGetMousePosition() был бы предпочтительным методом сегодня. - person Azeem.Butt; 14.10.2009
comment
Да, я имел в виду, что пример был Objective-C. Однако полезно знать о HIGetMousePosition(). Я обновлю свой ответ. - person Colin Gislason; 14.10.2009
comment
Функция HIGetMousePosition() является новой для Leopard. Нам нужна совместимость с 10.4, поэтому мы будем использовать GetMouse(). В Python он находится в модуле Carbon.Evt, поэтому правильный вызов: result=Carbon.Evt.GetMouse(). Спасибо вам обоим! - person Ivan Vučica; 22.10.2009