Глава 4

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

Устройство ввода типа «мышь» (далее просто мышь) значительно упрощает взаимодействие пользователя с интерактивной (диалоговой) программой.

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

4.1. ВЗАИМОДЕЙСТВИЕ С ДРАЙВЕРОМ МЫШИ

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

Драйвер представляет собой достаточно сложную программу, состоящую из двух основных частей — монитора мыши и монитора экрана.

Перемещение мыши измеряется в шагах. Шаг — это минимальное расстояние, регистрируемое датчиками мыши. Обычно разрешающая способность датчиков соответствует 8 шагам на миллиметр, т.е. величина шага составляет 0.125 мм. Существуют устройства, имеющие более высокую точность — до 16 шагов на миллиметр. Монитор мыши подсчитывает число шагов в каждом направлении и преобразует их в эквивалентное количество элементов изображения виртуального экрана. Элементы изображения определяются из стандартного текстового режима 80х25 путем умножения координат на 8, т.е. виртуальный экран — это максимальное разрешение CGA—адаптера в графическом режиме — 640х200. Координаты мыши могут выходить за пределы виртуального экрана, если реальный адаптер имеет более высокое разрешение.

Монитор экрана следит за соответствием положения указателя мыши на физическом экране текущим виртуальным координатам, полученным от монитора мыши. Поскольку дисплей может работать в различных режимах (текстовом или графическом), монитор экрана опрашивает текущий режим адаптера с помощью прерывания $10 и автоматически меняет изображение указателя при смене режимов. При быстрых перемещениях мыши монитор экрана может не успевать менять положение указателя на экране, поэтому драйвер следит также за скоростью смещения. Если эта скорость превосходит некоторую пороговую величину, драйвер удваивает число шагов, соответствующих одному и тому же линейному перемещению