2849

Работа с мышью

Контрольная

Информатика, кибернетика и программирование

Работа с мышью. Мышь – это устройство компьютера для ввода информации, относящееся к классу манипуляторов. Курсор мыши – это указатель мыши, перемещающийся по экрану в зависимости от перемещения мыши по столу. Так как курсор мыши представля...

Русский

2012-10-20

89 KB

29 чел.

Работа с мышью

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

Минимальное расстояние на экране, на которое может перемещаться курсор мыши в текстовом режиме – знакоместо, в графическом режиме – пиксел.

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

symbol=pixel/8+1,

где symbol – координата (x или y) знакоместа в текстовом режиме, pixel – координата курсора мыши, +1 – из-за разности координат левого верхнего угла в текстовом и графическом режимах.

Взаимодействие мыши с компьютером производится следующим образом: при изменении своего состояния (перемещение мыши по столу или нажатие кнопки) мышь генерирует соответствующий пакет данных, в котором хранится информация об изменении состояния, и посылает этот пакет по соответствующему интерфейсу компьютера, к которому мышь подключена. Это генерирует аппаратное прерывание, которое активизирует драйвер мыши (номер аппаратного прерывания зависит от типа мыши и интерфейса, к которому она подключена). Так как в состав BIOS и MS-DOS драйвер не входит, то он должен быть загружен пользователем (или ОС через настройки в файлах config.sys и autoexec.bat). Этот драйвер выполняет следующие функции: отслеживает перемещение мыши и состояние её кнопок; рисует на экране курсор мыши, повторяющий движения мыши; предоставляет программам пользователя интерфейс для работы с мышью, реализованный через программное прерывание 33h для обслуживания мыши.

Функции прерывания 33h

Функция 00h.

Выполняет аппаратный сброс мыши и программную установку драйвера мыши в исходное состояние.

Регистры на входе:

AX

0000h

Регистры на выходе:

AX

Состояние мыши

0000h – драйвер мыши не установлен

FFFFh – драйвер мыши установлен

BX

Информация о количестве кнопок у мыши

0 – Больше или меньше, чем 2

2 – Две кнопки

3 – Мышь системы Mouse Systems, имеет 3 кнопки

Функция 01h.

Позволяет включить курсор мыши.

Регистры на входе:

AX

0001h

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

Для управления видимостью курсора драйвер мыши использует внутренний счётчик. При вызове инициализирующей функции 00h значение счётчика устанавливается равным –1 и курсор невидим. При вызове функции 01h его значение увеличивается на 1 и становится равным 0, и курсор становится видимым и может перемещаться по экрану. Если счётчик равен 0, то следующие вызовы функции 01h игнорируются драйвером. Функция 01h сбрасывает область исключения, в которой курсор не отображается (если такая область была ранее установлена функцией 10h).

Функция 02h.

Позволяет выключить курсор мыши.

Регистры на входе:

AX

0002h

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

При вызове функции 02h значение счётчика уменьшается на 1, если его значение становится равным –1 или меньше, то курсор становится невидимым.

Функция 03h.

Возвращает текущие координаты курсора мыши и состояние кнопок.

Регистры на входе:

AX

0003h

Регистры на выходе:

BX

Информация о состоянии кнопок мыши

бит 0 – нажата левая кнопка

бит 1 –  нажата правая кнопка

бит 2 – нажата средняя кнопка

CX

Координата X курсора

DX

Координата Y курсора

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

Функция 04h.

Устанавливает курсор мыши в заданную позицию на экране.

Регистры на входе:

AX

0004h

CX

Новая координата X курсора

DX

Новая координата Y курсора

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

Для текстового режима значения координат должны быть уменьшены на 1 и умножены на 8.

Если область перемещения курсора ограничена функциями 07h или 08h, то при попытке установить курсор за границу области ограничения он будет установлен в точку, которая находится внутри области ограничения на минимальном расстоянии от точки, заданной вызовом функции.

Функция 05h.

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

Регистры на входе:

AX

0005h

BX

Номер кнопки, при нажатии которой запоминается положение курсора

0 – нажатие левой кнопки

1 –  нажатие правой кнопки

2 – нажатие средней кнопки

Регистры на выходе:

AX

Информация о состоянии кнопок мыши в момент вызова функции

бит 0 – нажата левая кнопка

бит 1 –  нажата правая кнопка

бит 2 – нажата средняя кнопка

BX

Количество нажатий на заданную кнопку, значение обнуляется после вызова функции

CX

Координата X курсора

DX

Координата Y курсора

В отличии от функции 03h эта функция возвращает не текущее состояние мыши, а запомненное в момент последнего нажатия на кнопку, определённую при вызове функции. Кроме того, возможно обнаружение многократных щелчков.

Функция 06h.

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

Регистры на входе:

AX

0006h

BX

Номер кнопки, при отпускании которой запоминается положение курсора

0 – отпускание левой кнопки

1 –  отпускание правой кнопки

2 – отпускание средней кнопки

Регистры на выходе:

AX

Информация о состоянии кнопок мыши в момент вызова функции

бит 0 – отпущена левая кнопка

бит 1 – отпущена правая кнопка

бит 2 – отпущена средняя кнопка

BX

Количество отпусканий заданной кнопки, значение обнуляется после вызова функции

CX

Координата X курсора

DX

Координата Y курсора

Функция 07h.

Задаёт диапазон движения курсора мыши по горизонтали.

Регистры на входе:

AX

0007h

CX

Минимальная координата X курсора

DX

Максимальная координата X курсора

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

Функция 08h.

Задаёт диапазон движения курсора мыши по вертикали.

Регистры на входе:

AX

0008h

CX

Минимальная координата Y курсора

DX

Максимальная координата Y курсора

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

Функция 09h.

Задаёт форму курсора мыши в графическом режиме.

Регистры на входе:

AX

0009h

BX

Номер столбца точки-указателя графического курсора (от –16 до 16)

CX

Номер строки точки-указателя графического курсора (от –16 до 16)

ES:DX

Указатель на растровое изображение курсора

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

Регистры ES:DX содержат указатель (ES – сегмент, DX – смещение) на область памяти размером 64 байта, которая состоит из 2 массивов длиной по 32 байта. Первый массив представляет собой логическую маску размером 16X16 бит, которая накладывается на участок видеопамяти под курсором с использованием логической операции «И». Второй массив – тоже маска размером 16X16 бит, но она накладывается с использованием логической операции «Исключающее ИЛИ», инвертируя отдельные точки изображения.

Функция 0Ah.

Задаёт форму курсора мыши в текстовом режиме.

Регистры на входе:

AX

000Ah

BX

Определяет тип курсора:

0 – определяемый программно

1 – определяемый аппаратно

CX

Маска экрана (для BX=0) или начальная строка курсора (для BX=1)

DX

Маска курсора (для BX=0) или конечная строка курсора (для BX=1)

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

Программный курсор представляет собой символ с инвертированным значением атрибута и используется по умолчанию. Для этого курсора вначале выполняется логическая операция «И» над содержимым видеопамяти в том месте, на которое указывает курсор, и маской экрана. Затем выполняется логическая операция «Исключающее ИЛИ» над содержимым видеопамяти с маской курсора. Курсор, сформированный аппаратными средствами, выглядит аналогично обычному текстовому курсору, его форма – прямоугольник, размер которого задаётся при помощи регистров CX и DX.

Функция 0Bh.

Определяет относительное перемещение мыши с момента последнего вызова этой функции.

Регистры на входе:

AX

000Bh

Регистры на выходе:

CX

Перемещение по горизонтали

DX

Перемещение по вертикали

Отрицательные значения перемещения соответствуют движению влево и вверх, положительные – вправо и вниз.

Для измерения перемещения используется единица mickey (мики). 1 мик=0.005 дюйма (1/200 дюйма). Мики - это наименьшее обнаруживаемое передвижение мыши. Для преобразования миков в пикселы можно использовать функцию 1Bh.

Функция 0Fh.

Задаёт скорость перемещения мыши.

Регистры на входе:

AX

000Fh

CX

Количество миков на 8 пикселов по горизонтали

DX

Количество миков на 8 пикселов по вертикали

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

При инициализации драйвера мыши используются следующие значения: CX=8, DX=16.

Функция 10h.

Устанавливает область исключения для курсора мыши.

Регистры на входе:

AX

0010h

CX

Координата X верхнего левого угла области

DX

Координата Y верхнего левого угла области

SI

Координата X нижнего правого угла области

DI

Координата Y нижнего правого угла области

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

Если оператор помещает курсор в область исключения, то курсор мыши пропадает. Эта область отменяется функциями 00h и 01h.

Функция 12h.

Задаёт увеличенный графический курсор (определена только для мыши системы PC Mouse).

Регистры на входе:

AX

0012h

BH

Ширина курсора в словах (1 слово равно 2 байтам)

CH

Количество строк в изображении курсора

BL

Номер столбца точки-указателя графического курсора (от –16 до 16)

CL

Номер строки точки-указателя графического курсора (от –16 до 16)

ES:DX

Указатель на растровое изображение курсора

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

Функция 13h.

Определяет порог удвоения скорости.

Регистры на входе:

AX

0013h

DX

Значение порога удвоения, мики в секунду

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

Если мышь перемещается со скоростью, превышающей порог удвоения, аппаратура мыши удваивает величину перемещения. При инициализации устанавливается значение порога в 64 мика в секунду. Если необходимо восстановить это значение, необходимо при вызове задавать DX=0.

Функция 1Ah.

Устанавливает значения чувствительности мыши и порога удвоения.

Регистры на входе:

AX

001Ah

BX

Горизонтальная чувствительность в миках на пиксел

CX

Вертикальная чувствительность в миках на пиксел

DX

Значение порога удвоения, мики в секунду

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

Функция 1Bh.

Определяет значения чувствительности мыши и порога удвоения.

Регистры на входе:

AX

001Bh

Регистры на выходе:

BX

Горизонтальная чувствительность в миках на пиксел

CX

Вертикальная чувствительность в миках на пиксел

DX

Значение порога удвоения, мики в секунду

Функция 1Dh.

Устанавливает номер страницы видеопамяти, на которой будет отображаться курсор мыши.

Регистры на входе:

AX

001Dh

BX

Номер страницы видеопамяти

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

По умолчанию для отображения используется страница 0.

Функция 1Eh.

Определяет номер страницы видеопамяти, на которой отображается курсор мыши.

Регистры на входе:

AX

001Eh

Регистры на выходе:

BX

Номер страницы видеопамяти


 

А также другие работы, которые могут Вас заинтересовать

53903. Сума кутів трикутника 46.5 KB
  Мета: сформулювати та довести теорему про суму кутів трикутника ознайомити учнів з поняттям зовнішнього кута трикутника розвивати навички практичної діяльності з геометричними інструментами відпрацьовувати вміння логічно мислити робити висновки. Побудувати трикутник за даними кутами 1 ряд 2 ряд 3 ряд  А = 38 0...
53904. Суміжні і вертикальні кути 322 KB
  Замислюйся міркуй питання занотуй. Познач кути між кольоровими променями і променями АВ і АС. Чи є на цьому малюнку кути що утворюють розгорнутий кут Побудуй на око: а кут який має градусну міру більше 00 але менше 900; б кут рівний 900; в кут більший 900 але менший за 1800.
53905. Суміжні кути 82 KB
  Мета: засвоїти означення суміжних кутів; вивчити формулювання та доведення теореми про суму суміжних кутів а також наслідки із цієї теореми; розвивати увагу логічне мислення просторову уяву; виховувати охайність працьовитість. Обладнання: Моделі кутів карткизавдання. І так ви відгадали що країна в яку ми повинні вирушити складається з кутів. Наше завдання: 1 відшукати там невідомий для нас вид кутів; 2 довести що сума цих кутів дорівнює 180; 3 встановити наслідки цього доведення.
53906. Квадратні корені 548.5 KB
  Після уроку учні зможуть: застосовувати теоретичний матеріал про квадратні корені до вирішення вправ; навчитися усвідомленому застосуванню вивченого матеріалу під час вирішення завдань; набути навичок роботи в малих групах; набути навичок логічних міркувань; формування мотивації здорового способу життя Використані технології: інтерактивні технології: Мікрофон Робота в малих групах. Робота в малих групах. Учні об'єднуються в групи по 4 особи 1 і 2 3 і 4 парти згадують правила роботи в групах...
53907. Розвязування квадратичних нерівностей методом інтервалів 57 KB
  Мета: ознайомити учнів з розвязанням квадратичних нерівностей методом інтервалів; формування уміння розвязувати квадратичні нерівності методом інтервалів. Виховувати охайність під час виконання малюнка.
53908. РЕШЕНИЕ КВАДРАТНЫХ УРАВНЕНИЙ 208 KB
  Какое уравнение называют квадратным уравнение вида ах2bxc=0 где х переменная а bс числа причем а≠0 числа а bс называются коэффициентами квадратного уравнения; а первый коэффициент b второй коэффициент с свободный член Например: 2х24х8=0 Какое квадратное уравнение называется приведенным Приведенным квадратным уравнением называется такое квадратное уравнение в котором первый коэффициент равен 1 т. а=1 Например: х23х10=0 Какое квадратное уравнение называется неполным Неполным квадратным уравнением...
53909. Квадратні рівняння 207 KB
  Мета уроку: формувати уміння розвязувати квадратні рівняння. Квадратні рівняння простіших видів вавилонської математики вміли розвязувати ще 4 тис. Згодом розвязували їх також: в Китаї і Греції. Він показав як розвязувати при додатних а і bрівняння видів .
53910. Розвязування квадратних рівнянь 181 KB
  Тема: Розвязування квадратних рівнянь. Мета: Узагальнити способи розвязування квадратних рівнянь формувати вміння і навики досліджувати і розвязувати квадратні рівняння розвивати пізнавальний інтерес цікавість увагу память. Сьогодні предметом дослідження на уроці буде тема Розвязування квадратних рівнянь і застосування різних способівâ. Чому стільки часу відводиться для вивчення цієї теми Тому що багато задач економіки фізики зводяться до розвязування квадратних рівнянь.
53911. Система роботи з підвищення кваліфікації вчителів 59 KB
  Корисно знайомитися з результатами новітніх досліджень в області викладання науки методичними прийомами роботи вивчати технічні засоби навчання заслуховувати доповіді та повідомлення вчителів про результати своєї діяльності. У процесі спостереження уроків бесід вони знайомляться з методами та прийомами роботи свого керівника спільно складають тематичні плани вивчають літературу з окремих питань взаємно відвідують уроки і ретельно аналізують їх відбираючи і закріплюючи все те цінне що сприяє ефективності роботи. Проблемні групи спільно...