Курсор мыши: управление указателем на экране

Курсор мыши - незаметный, но важнейший элемент пользовательского интерфейса. От скорости и точности его перемещения зависит удобство работы с компьютером. Давайте разберемся, как устроен курсор, откуда он появился и как им управлять.

История создания курсора мыши

Первые разработки в области курсора мыши относятся к 1968 году, когда американский изобретатель Дуглас Энгельбарт вместе с командой Стэнфордского исследовательского института создали одни из первых элементов графического интерфейса пользователя, в том числе курсор и возможность гиперссылок.

9 декабря 1968 года состоялась легендарная демонстрация системы oN-Line System (NLS), получившая название "The Mother of All Demos" ("Мать всех демонстраций"). На ней впервые были продемонстрированы мышь и графический пользовательский интерфейс с курсором.

Первоначально курсор имел примитивный вид - чаще всего это был прямоугольник или простая стрелка. С развитием графических возможностей компьютеров дизайн курсора совершенствовался.

В операционной системе Windows курсор приобрел характерную стрелку с тенью. Появились различные анимированные курсоры для выделения определенных действий, например "песочные часы" во время ожидания.

Современные курсоры в Windows сохраняются в форматах .cur и .ani с размером 32x32 пикселя и поддержкой альфа-канала.

Рука с мышью

Устройство курсора мыши

Курсор мыши может иметь различную форму и размер, хотя чаще всего это изображение 32x32 пикселя. Небольшой размер позволяет курсору не загораживать важную информацию под собой.

Старые монохромные дисплеи поддерживали только черно-белые курсоры. Современные системы отображения позволяют использовать курсоры в цвете и полупрозрачные курсоры с альфа-каналом.

Курсор может быть статичным изображением или анимированным, когда кадры меняются с определенной частотой для создания иллюзии движения.

Примеры анимированных курсоров:

  • Песочные часы или круговая индикация ожидания
  • Стрелка с волнообразным движением вправо-влево
  • Рука с поднятым вверх указательным пальцем

Важной частью курсора является точка, называемая "горячей точкой". Она определяет положение курсора на экране при взаимодействии с интерфейсом. У стрелки горячая точка располагается на конце, у перекрестия - в центре.

Изображения курсоров хранятся в файлах формата .cur (статичные курсоры) и .ani (анимированные курсоры). Несмотря на внешнее сходство, курсор отличается от иконки тем, что должен соответствовать параметрам текущего устройства отображения.

Стандартные и пользовательские курсоры

Операционная система Windows поставляется с набором стандартных курсоров, доступных для использования. Их идентификаторы перечислены в заголовочных файлах Windows SDK.

Например:

  • IDC_ARROW - стандартная стрелка
  • IDC_CROSS - перекрестие
  • IDC_WAIT - песочные часы

Каждому стандартному курсору по умолчанию соответствует определенное графическое изображение. При необходимости его можно заменить вызовом функции SetSystemCursor.

Для создания собственных курсоров обычно используются графические редакторы. Готовый курсор добавляется в ресурсы приложения и загружается вызовом LoadCursor во время выполнения программы.

Рекомендуется реализовывать пользовательские курсоры через ресурсы, а не создавать их динамически. Это позволяет кэшировать курсоры и совместно использовать их между приложениями.

Таким образом, устройство курсора довольно простое, но позволяет гибко настраивать этот важный элемент интерфейса под нужды пользователя и приложения.

Управление видимостью и положением курсора

Система автоматически отображает курсор мыши в нужной позиции при перемещении мыши. Но при необходимости положение и видимость курсора можно контролировать программно.

Для получения текущих координат курсора используется функция GetCursorPos. А для явной установки курсора в нужную позицию - SetCursorPos.

Чтобы получить дескриптор текущего курсора, вызывается функция GetCursor. А для принудительной смены курсора - SetCursor.

Скрыть и показать курсор позволяет функция ShowCursor. Она использует внутренний счетчик отображений курсора, увеличивая или уменьшая его.

Если нужно ограничить область перемещения курсора, можно задать прямоугольную область с помощью функции ClipCursor. Это полезно, например, чтобы удерживать курсор в пределах модального диалога.

Функция CopyCursor позволяет скопировать дескриптор курсора из одного приложения в другое для совместного использования курсоров.

Курсоры классов окон

При регистрации класса окна с помощью RegisterClass можно назначить ему курсор по умолчанию, который будет использоваться всеми окнами этого класса.

Чтобы переопределить курсор класса в конкретном окне, нужно обработать в нем сообщение WM_SETCURSOR.

Также курсор класса окон можно поменять вызовом SetClassLong, который изменит параметры окна по умолчанию для всех экземпляров класса.

Разные формы курсоров на экране

Обработка событий мыши

При движении мыши система отслеживает положение курсора и отправляет сообщения о событиях мыши в окна под курсором.

В сообщении указываются координаты "горячей точки" курсора в момент события.

Обрабатывая эти сообщения, приложение может реагировать на действия пользователя с мышью.

Смена курсора при наведении

Когда курсор попадает в разные области интерфейса, его внешний вид меняется в соответствии с возможными действиями.

Например, при наведении на ссылку курсор принимает вид руки, а в поле ввода текста - вертикальной линии.

Такую смену курсора при наведении можно настраивать средствами CSS для веб-страниц, задав нужный вид через свойство cursor.

Грамотно подобранные курсоры повышают интуитивность интерфейса для пользователя.

Статья закончилась. Вопросы остались?
Комментариев 3
Подписаться
Я хочу получать
Правила публикации
0
Я пользуюсь только тачпадом, ОС Windows 8. Периодически залипает курсор.
Что делать если курсор залип и зайти в какие-либо настройки нет возможности.
Ноутбук с предустановленной ОС Windows 8 купила три дня назад и уже два раза случалась такая ерунда.
Копировать ссылку
0
Такая же проблема, причем возникла месяца два назад. Курсор или останавливается, или "уезжает" влево до упора. Помогает переустановка штекера, мышь с "круглым" разъемом, не USB. Такое только в браузере, при работе с документами все нормально.
Копировать ссылку
1
хотя я и "ЧАЙНИК",но все понятно,спасибо.
Копировать ссылку
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.