Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с мышью.doc
Скачиваний:
1
Добавлен:
16.11.2019
Размер:
79.36 Кб
Скачать

Р А Б О Т А С М Ы Ш Ь Ю

  1. Как инициализировать мышь? Какая при этом функция используется?

  2. Как включить (выключить) курсор мыши? Какая при этом функция используется?

  3. Как определить текущий видеорежим?

  4. Как установить новый видеорежим?

  5. Как восстановить режим видеоадаптера?

  6. Как задать форму курсора мыши в графическом режиме?

  7. Как задать форму курсора мыши в текстовом режиме?

  8. Как определить положение курсора при нажатии ( отпускании ) клавиши?

  9. Как установить курсор в заданную позицию?

  10. Как задать движение курсора по горизонтали (вертикали)?

Общие сведения

Для работы с мышью используется вектор прерывания INT 33h. Эта программа выполняет все операции, связанные с обслуживанием мыши:

  • сброс мыши и установку драйвера в исходное состояние;

  • включение и выключение курсора в определенное место экрана;

  • определение текущих координат курсора и текущего состояния клавиш;

  • определение координат курсора и состояния клавиш в момент нажатия на клавишу и в момент отпускания клавиши;

  • определение области на экране, в пределах которой может перемещаться курсор;

  • определение области на экране, в пределах которой курсор не будет виден;

  • определение формы графического и текстового курсоров;

  • определение величины перемещения мыши в сотых долях дюйма;

  • подключение к драйверу процедуры, определенной в программе, получающей управление при нажатии на заданную клавишу или при перемещении мыши;

  • запоминание и восстановление состояние драйвера;

  • управление скоростью движения курсора;

  • указание или определение используемой страницы видеопамяти;

  • управлением драйвером мыши.

Инициализация мыши.

Для инициализации мыши используется функция с кодом 00h. Эта функция выполняет аппаратный сброс мыши и программную установку драйвера мыши в исходное состояние. С помощью функции 0h можно выполнить установку драйвера в исходное состояние, не выполняя аппаратного сброса мыши.

Регистры на входе: АX=0000h

Регистры на выходе: AX = состояние мыши

BX = количество клавиш у мыши.

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

В регистр ВХ возвращается количество клавиш мыши

Содержимое ВХ

Количество клавиш

0

Больше или меньше чем две

1

Две клавиши

2

Мышь системы Mouse Systems, имеет 3 клавиши

Включение (выключение) курсора мыши

Для включения курсора мыши используется функция 01h. Эта функция позволяет включать или выключать курсор мыши :

Регистры на входе: АХ = 0001h

Регистры на выходе: Регистры не используются

Для управления видимостью курсора драйвер использует внутренний счетчик. Этот счетчик можно увеличивать, вызывая функцию 01h прерывания 33h, или уменьшать при помощи функции 02h этого же прерывания.

После инициализации драйвера функцией 00h счетчик устанавливается равным -1. После первого вызова функции 01h счетчик становится равным нулю. При этом курсор мыши становится видимым, его можно перемещать по экрану.

Если счетчик равен нулю, то следующие вызовы функции 01h игнорируются драйвером. Для того, чтобы погасить курсор, используйте функцию 02h, которая при вызове уменьшает каждый раз содержимое счетчика на единицу.

Функция 01h сбрасывает область, в которую курсор не отображается (Если такая область была ранее установлена функцией 10h).

Для выключения курсора мыши используется функция 02h. Эта функция уменьшает на единицу счетчик видимости курсора. Если содержимое счетчика становится равным -1, изображение курсора пропадает с экрана.

Регистры на входе : АХ = 0002h

Регистры на выходе : Регистры не используются

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

Это связано с тем, что драйвер мыши запоминает старое значение атрибута символа, на который указывал курсор до обновления содержимого видеопамяти. Вы изменили атрибут, записав новое значение непосредственно в экранную память. Теперь, если установить курсор мыши на другой символ, изображение старого символа будет испорчено - появится прямоугольник (как бы еще одно изображение курсора мыши).

Определение положения курсора.

Для определения положения курсора используется функция 03h. Эта функция возвращает текущие координаты курсора мыши и состояние клавиш.

Регистры на входе: АХ = 0003h

Регистры на выходе : ВХ = состояние клавиш мыши;

СХ = координата Х курсора;

DX = координата Y курсора;

В зависимости от того, была ли нажата какая-либо клавиша мыши в момент вызова функции, в регистре ВХ могут быть установлены следующие флаги:

Бит регистра ВХ

Клавиша, которая была нажата

0

Левая

1

Правая

2

Средняя

Для графических режимов координаты располагаются в различных диапазонах

Размер экрана в пикселях

Номер режима

Диапазон координат по оси Х

Диапазон координат по оси Y

320x200

4, 5

0-319

0-199

640x200

6

0-639

0-199

320x200

0Dh

0-638

0-199

640x200

0Eh

0-639

0-199

640x250

0Fh

0-639

0-249

Программы, работающие в текстовом режиме, должны разделить полученные координаты на 8 (как координату Х, так и координату Y).

Использование функции 03h не самый лучший способ работы с мышью. Программа должна постоянно следить за координатами курсора или за состоянием клавиш. Это может привести к непроизводительным затратам процессорного времени на опрос состояния.

Далее рассмотрены другие способы определения состояния мыши.