Управление курсором мыши

Quartz Display Services включает функции для управления курсором мыши. Например, когда Ваше приложение находится в полноэкранном режиме, можно хотеть скрыть курсор мыши, переместить курсор в различное расположение или разъединить движение мыши с позицией курсора. Эта статья кратко описывает функции, предоставляющие эти услуги. Для использования этих функций приложение должно быть на переднем плане.

Чтобы скрыть или показать курсор мыши на любом дисплее, используйте функции CGDisplayHideCursor и CGDisplayShowCursor. Эти функции берут дисплей ID в качестве параметра, но не используется дисплей ID. Вызовы к этим функциям должны быть сбалансированы; Кварц поддерживает скрыть количество курсора, которое должно быть нулем для показа курсора.

В то время как приложение находится на переднем плане, кварц обеспечивает удобную функцию для разъединения движения мыши с позицией курсора. Путем передачи false к функции CGAssociateMouseAndMouseCursorPosition, можно препятствовать тому, чтобы движение мыши изменило позицию курсора. Передача true инвертировать эффект.

Можно изменить местоположение курсора мыши на определенном дисплее путем вызывания функции CGDisplayMoveCursorToPoint. Эта функция берет два параметра, дисплей ID и точка. Расположение точки относительно источника или верхнего левого угла дисплея. Можно также изменить местоположение курсора мыши к любому дисплею путем вызывания функции CGWarpMouseCursorPosition. Эта функция берет единственный параметр, точку в глобальных координатах дисплея. Вызов любой из этих функций не генерирует событие от нажатия мыши.

Перечисление 1 показывает, как Вы скрыли бы курсор, разъединили бы движение мыши с курсором, переместите его в источник основного дисплея, и затем восстановите курсор и мышь, когда Вы сделаны.

Перечисление 1  , Управляющее курсором мыши

CGDisplayHideCursor (kCGNullDirectDisplay);
CGAssociateMouseAndMouseCursorPosition (false);
CGDisplayMoveCursorToPoint (kCGDirectMainDisplay, CGPointZero);
/* perform your application’s main loop */
CGAssociateMouseAndMouseCursorPosition (true);
CGDisplayShowCursor (kCGNullDirectDisplay);