Функции работы с мышью (Int 33h)




Назначение № Функции Данные на входе Данные на выход
Функция выполняет аппаратный сброс мыши и программную установку драйвера мыши в начальное состояние. 00h ax – 0000h ax - состояние мыши; bx - количество клавиш у мыши: 0 - больше или меньше, чем две; 1 - две клавиши; 2 - мышь системы Mouse Systems, имеет три клавиши

 

Если на выходе из прерывания регистр AX содержит значение 0000h, значит драйвер мыши не установлен. Если же содержимое этого регистра равно 0FFFFh, драйвер имеется и вы можете использовать другие функции для работы с мышью.

 

Назначение № Функции Данные на входе Данные на выход
Функция включает курсор мыши. 01h ax – 0001h  
Функция выключает курсор мыши. 02h ax – 0002h  

 

 

Назначение № Функции Данные на входе Данные на выход
Функция определения положения курсора.   03h ax – 0003h bx - состояние клавиш мыши; cx - координата X курсора; dx - координата Y курсора
В зависимости от того, была ли нажата какая-либо клавиша мыши в момент вызова функции, в регистре BX могут быть установлены следующие флаги:
Установленный бит регистра BX Клавиша, которая была нажата
  Левая
  Правая
  Средняя
Для графических режимов координаты располагаются в различных диапазонах, в зависимости от текущего режима видеоадаптера:
Размер экрана в пикселях Номер режима Диапазон координат по оси X Диапазон координат по оси Y
320x200 4,5 0 - 638 0 - 199
640x200   0 - 639 0 - 199
320x200 0Dh 0 - 638 0 - 199
640x200 0Eh 0 - 639 0 - 199
640x350 0Fh 0 - 639 0 - 349
Программы, работающие в текстовом режиме, должны разделить полученные координаты на 8 (как координату X, так и координату Y).
           

 

Функция 0Ch позволяет программе создать свой собственный драйвер (обработчик) событий, связанных с перемещением мыши, а также с нажатием или отпусканием клавиш мыши.
Назначение № Функции Данные на входе Данные на выход
Функция установки драйвера событий.   0Сh ax – 000Сh; cx - маска вызова; es:dx - адрес подключаемого драйвера событий  
Биты маски вызова, передаваемой функции в регистре CX, определяют условие вызова драйвера событий:
Бит маски вызова Когда выполняется вызов
  Перемещение мыши
  Нажатие левой клавиши
  Отпускание левой клавиши
  Нажатие правой клавиши
  Отпускание правой клавиши
  Нажатие средней клавиши
  Отпускание средней клавиши
Если записать в регистр CX значение 7Fh, драйвер будет вызываться при возникновении любого события, а если 00h – драйвер будет отключен. Адрес процедуры драйвера передается при вызове функции в регистровой паре ES:DX. Драйвер должен быть оформлен в виде процедуры типа FAR, завершающейся командой дальнего возврата RETF. Когда драйвер получает управление, в регистрах процессора содержатся следующие значения:
Регистр Описание
AX Маска вызова, такая же, как и при вызове функции 0Ch
BX Состояние клавиш мыши: бит 0 - левая клавиша; бит 1 - правая клавиша; бит 2 - средняя клавиша
CX Координата X курсора мыши
DX Координата Y курсора мыши
SI Относительное перемещение мыши по горизонтали в миках
DI Относительное перемещение мыши по вертикалив миках
DS Сегмент данных драйвера мыши
Так как регистр DS при вызове драйвера событий содержит сегмент данных драйвера мыши, драйвер событий должен позаботиться о правильной установке этого регистра. Однако драйвер событий не обязан сохранять и восстанавливать содержимое регистра DS и других регистров процессора. Если необходимо отключить драйвер, выполните повторный вызов функции 0Ch, записав в регистр CX нулевое значение. Если программа, устанавливающая собственный драйвер событий, завершает свою работу и передает управление MS-DOS, предварительно она обязательно должна отключить драйвер событий. Составление программы драйвера событий имеет некоторые особенности. Драйвер событий вызывается не из программы пользователя, а из драйвера мыши. При этом сегментный регистр DS будет указывать на сегмент данных драйвера мыши, а не на сегмент данных программы. Драйвер событий может также организовать очередь событий, записывая в эту очередь состояние мыши на момент появления события и время появления события. Прикладная программа будет затем извлекать события из очереди и анализировать их.
           

Задания для выполнения

1. Вывести фразу ‘Была нажата левая клавиша’, при нажатии левой клавиши мыши и фразу ‘Была нажата правая клавиша’, при нажатии правой клавиши мыши используя функцию 03h. Выход из программы осуществить по нажатию клавиши ESC.

2. Вывести фразу ‘Была нажата левая клавиша’, при нажатии левой клавиши мыши и фразу ‘Была нажата правая клавиша’, при нажатии правой клавиши мыши используя функцию 0Сh. Выход из программы осуществить по нажатию клавиши ESC.

 

Критерии оценок:

5 – работа выполнена полностью (решены две задачи). В тексте программ нет синтаксических ошибок. Разработан оптимальный алгоритм решенных задач.

4 – работа выполнена полностью (решены две задачи). Решение задач осуществлялось под руководством преподавателя. Разработан не оптимальный алгоритм решенных задач.

3 – работа выполнена не полностью (решена одна задача). В тексте программы нет синтаксических ошибок. Разработан не оптимальный алгоритм решенной задачи.

2 – ни одна из поставленных задач не была реализована.




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: