Курсор и мышь
Построение рисунка курсора
Манипулятор "мышь" (далее просто мышь) является основным инструментом для поддержки диалога пользователя с задачей при работе в графических видеорежимах. С помощью мыши выбираются и активизируются диалоговые окна, меню или значки на панелях инструментов, выполняются различные манипуляции с рисунками и прочие действия.Курсоры для Windows
Наиболее доступными являются файлы, содержащие рисунки курсоров, подготовленные в стандарте Windows. Операционные системы Windows используют курсоры различной формы: стрелка, вертикальная черта, рука, песочные часы и пр.Предварительная подготовка рисунка
В исходном виде рисунок курсора и маска не удобны для многократного использования. Их надо распаковать, перевернуть, по возможности сократить и хранить в оперативной памяти до конца выполнения задачи.Немаскируемый курсор
При построении обычных рисунков их образы копируются в видеопамять, но если таким способом построить рисунок, образ которого приведен в примере 6.3, то изображение белой стрелки будет расположено на фоне черного прямоугольника.Маскируемый курсор
Маскировка является одним из способов исключения ненужных элементов изображения в процессе построения рисунка. Она применяется не только при выводе на экран курсоров и пиктограмм, но и во многих других случаях, например, при сборке рисунков из отдельных частей.Замечания к описанным подпрограммам
В двух предыдущих разделах описаны действия, которые надо выполнить для построения или удаления изображения курсора. Здесь мы рассмотрим, как изменяются команды, выполняющие эти действия в зависимости от тех или иных дополнительных условий.Подготовка к работе с манипулятором "мышь". Общее описание драйвера мыши.
Манипулятор "мышь" преобразует свое перемещение в электрические сигналы и посылает их в компьютер. Наибольшее распространение получили электромеханические устройства, у которых датчиком перемещений является металлический шарик.Предварительные действия
В данном разделе описана настройка драйвера и задачи на совместную работу. Выполняемые при этом действия не зависят от того, как задача взаимодействует с драйвером, – периодически обращаясь к нему, или в режиме прерываний.Работа в режиме опроса драйвера мыши. Управляющий алгоритм для режима опроса.
С манипулятором "мышь", как с большинством внешних устройств, задача может работать в режиме опроса его текущего состояния, или в режиме прерываний. Принципиальное различие состоит в том, как задача "узнает" об изменении состояния мыши.Формирование кодов событий
В примере 6.10 четвертая команда вызывает подпрограмму statins, текст которой приведен в примере 6.12. Она формирует и передает задаче данные о событиях, связанных с манипулятором "мышь". Выполняемые в ней действия оформлены в виде подпрограммы, для того чтобы их можно было использовать не только в управляющем алгоритме, но и в других случаях, когда нужны данные о состоянии мыши.Управление перемещением курсора
Необходимость перемещения курсора возникает при обработке тех событий, которым в табл. 6.2 соответствуют коды от 4 до 7. Перемещение в чистом виде вызывает только событие с кодом 4 – мышь движется, кнопка не нажата и ее состояние не изменялось.Работа в режиме прерываний. Функции драйвера.
Недостаток режима опроса заключается в том, что задача не узнает об изменении состояния мыши до тех пор, пока не обратится к драйверу. В некоторых случаях этот недостаток имеет принципиальное значение, и программист вынужден использовать режим прерываний.Примеры прерывающих подпрограмм
Некоторые особенности программирования для режима прерываний были описаны ранее на примере обработки аппаратных прерываний от таймера. Программирование работы с мышью имеет свои специфические особенности.