NSWindow прикреплено к курсору
Я хотел бы сделать пользовательскую панель, которая показывает масштаб в текущем положении курсора. Как, например, "Sip". Я искал в Интернете примеры, но не нашел ничего конкретного.
я нашел NSEvent
"s addGlobalMonitorForEventsMatchingMask:handler:
а также addLocalMonitorForEventsMatchingMask:handler:
методы. Теперь я могу просто установить происхождение фрейма окна. Но я не уверен, что это действительно правильное решение.
Есть лучший способ сделать это? Может ли кто-нибудь указать мне пример кода?
1 ответ
Вот и все.
Вы также можете использовать функцию семейства Quartz Event Tap CGEventTap, так как она обеспечит немного большую скорость отклика во время таких событий, как переключение приложений Mac и Exposé, или Mission Control, или Dashboard. Однако его немного сложнее настроить, и в нем используется метод обратного вызова C, который немного сложнее использовать с некоторыми вещами.
В остальном, Quartz Event Taps - это то же самое, но, возможно, немного быстрее.
Если вы используете это, обязательно используйте функцию CGPoint CGEventGetUnflippedLocation(CGEventRef aCGEvent)
Как в: CGPoint eventLocation = CGEventGetUnflippedLocation(aCGEvent);
Это будет гарантировать, что ваши координаты у слева внизу, как и остальная часть Какао. В противном случае используйте его родного брата CGEventGetLocation()
который по какой-то странной причине дерьмового именования не означает, что он возвращает перевернутые координаты. (но документы утверждают это)