Int 3. 3h - Работа с мышью. Наиболее распространенным устройством ввода графической информации в. ПЭВМ является мышь. При перемещении мыши и/или нажатии/отпускании.
Это можно сделать, вызвав функцию 35h прерывания 21h. Если этот вектор равен 0000:0000, то драйвер мыши не установлен. Драйвер мыши, независимо от того, реализован он через устанавливаемый.
Существует много различных. ПЭВМ. Для достижения некоторой унификации каждая. При. этом вся работа с мышью происходит через драйвер, который от- слеживает. При- кладная. программа осуществляет прерывание 3. Ниже приведены используе- мые файлы Mouse. Mouse. cpp. При этом курсор перемещается синхронно с перемещениями самой мыши. Одна- ко при этом драйвер мыши продолжает отслеживать ее перемещения, причем к этой функции возможны вложенные вызовы.
Каждый вызов функции Hide. Mouse. Cursor уменьшает значение внутреннего счетчика драйвера на единицу, каждый вызов функции Show. Mouse. Cursor уве- личивает счетчик. Курсор мыши виден только, когда значение счетчи- ка равно 0 (изначально счетчик равен - 1). Поэтому, если нужно произвести вывод на экран в том месте, где может находиться курсор мыши, сле- дует убрать его с экрана, выполнить требуемый вывод и затем снова вывести курсор мыши на экран. Поля х и у содержат текущие координаты курсора в пикселах, поле Buttons определяет, какие кнопки нажаты. Установленный бит 0 соответствует нажатой левой кнопке, бит 1 - правой, и бит 2 - средней.
Int 10h.;вызов прерывания видеосервиса mov ax,0b800h.;загрузка сегмента видеобуфера mov es,ax. Цель работы: изучение функций, предоставляемых прерыванием 33h для работы с. Драйвер мыши отображает перемещение мыши даже тогда. Макроассемблер MASM.
Максимальное количество символов 247 (в MASM). Три Экрана Элдера V3 0 тут. Большинство программ DOS, которые используют драйвер мыши или. Последние две команды процедуры main (MOV AX,4C00h и INT 21h) заканчи. При этом вся работа с мышью происходит через драйвер, который. При-кладная программа осуществляет прерывание 33h, передавая в регист-рах .
Для задания области возможного перемещения курсора по горизонтали служит функция Set. Horz. Mouse. Range, для задания об- ласти перемещения по вертикали - функция Set. Vert. Mouse. Range. Каждую из масок можно трактовать как изображение, составленное из пикселов белого (соответствующий бит равен 1) и черного (соответствующий бит равен 0) цветов. При выводе курсора на экран сначала на содержимое экра- на накладывается (с использованием операции AND. Все необходимые параметры для задания курсора мыши содержатся в полях структуры Cursor.
Shape. Для этого использу- ется функция Set. Hide. Range. Но при выходе курсора из области гаше- ния он не восстанавливается. Поэтому для восстановления нормаль- ной работы курсора необходимо вызвать функцию Show. Mouse. Cursor, независимо от того, попал ли курсор в область гашения или нет. Для установки этой функции следует воспользоваться функцией Set Mouse Handler, где в качестве первого параметра выступает указатель на функцию, а второй параметр задает события, при наступлении которых следует вызвать переданную функцию.
События задаются посредством битовой маски. Возможные события определяются при помощи символических констант MOUSE. Тре- буемые условия соединяются побитовой операцией ИЛИ, Передавае- мая функция получает 4 параметра - маску события, повлекшего за собой вызов функции, маску состояния кнопок мыши и текущие ко- ординаты курсора. По окончании работы программы необходимо обя- зательно убрать обработчик событий (при помощи функции Remove.