Алгоритмические языки и программирование
Работа с модулем мыши MOUSE.TPU
Методические указания
к выполнению лабораторной работы №11
для студентов очной формы обучения
специальностей 075300 – "Организация и технология
защиты информации",
220300 – "Системы автоматизированного проектирования"
Брянск 2006
УДК 004.43
Алгоритмические языки и программирование. Работа с модулем мыши MOUSE.TPU: методические указания к выполнению лабораторной работы №11 для студентов очной формы обучения специальностей 075300 – "Организация и технология защиты информации", 220300 – "Системы автоматизированного проектирования".– Брянск: БГТУ, 2006. - 11 с.
Разработал: Ю.А. Леонов, асс.
Рекомендовано кафедрой «Компьютерные технологии и системы» БГТУ (протокол № 1 от 6.09.06)
ЦЕЛЬ РАБОТЫ
Целью работы является овладение практическими навыками работы с модулем MOUSE.TPU.
Продолжительность работы – 3ч.00мин.
Теоретическая часть
Модуль (UNIT) в языке Pascal – это особым образом оформленная библиотека подпрограмм. Модуль в отличие от программы не может быть запущен на выполнение самостоятельно, он может только участвовать в построении программ и других модулей. Модули позволяют создавать личные библиотеки процедур и функций и строить программы практически любого размера.
Модуль в языке Pascal представляет собой отдельно хранимую и независимо компилируемую программную единицу. В общем случае модуль – это совокупность программных ресурсов, предназначенных для использования другими программами. Под программными ресурсами понимаются любые элементы языка Pascal: константы, типы, переменные, подпрограммы.
Все программные элементы модуля можно разбить на две части:
· программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;
· программные элементы, необходимые только для работы самого модуля, их называют невидимыми или скрытыми.
В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией. В нашем случае рассмотрим модуль мыши Mouse.tpu, который имеет следующий вид:
Unit mouse;
Interface {Интерфейсная часть}
type resetrec = record {Данная структура используется в
exists: boolean; процедуре для определения в ОС мыши}
nbuttons: integer;
end;
locrec = record {Структура locrec используется для
buttonstatus: integer; получения информации о состоянии
opcount: integer; мыши: buttonstatus - номер нажатой
column: integer; клавиши; opcount – флаг, который
row: integer; выставляется при происхождении
end; события: 1-событие произошло, 0-нет;
column – количество столбцов или x;
row – количество строк или y}
moverec = record {Структура moverec используется для
hcount: integer; записи относительного смещения
vcount: integer; координат мыши при движении ее}
end;
procedure mreset(var mouse: resetrec);
{Процедура, которая инициализирует переменную mouse данными, взятыми в ОС}
procedure mshow;
{Процедура, вызывающая появление курсора мыши}
procedure mhide;
{Процедура, которая «прячет» курсор}
procedure mpos(var mouse: locrec);
{Данную процедуру необходимо крутить в цикле, тогда данные, возвращаемые в структуре locrec, будут сообщать текущее состояние мыши}
procedure mmoveto(col, row: integer);
{Процедура, перемещающая курсор мыши в заданные координаты}
procedure mpressed(button: integer; var mouse: locrec);
{Процедура, которая отслеживает событие нажатия на клавишу, передаваемую в button: 0-левая клавиша мыши, 1-правая клавиша мыши. В структуре locrec возвращается buttonstatus – нажатая клавиша во время срабатывания события. Факт срабатывания события можно определить по значению в opcount: 1-событие сработало, 0-событие не сработало}
procedure mreleased(button: integer; var mouse: locrec);
{Процедура, аналогичная mpressed. Событие срабатывает в том случае, когда клавиша мыши отпущена}
procedure mcolrange(min, max: integer);
{Устанавливает минимальные и максимальные границы для перемещения курсора мыши, т.е. если вызвали процедуру mcolrange с фактическими параметрами 10 и 50: mcolrange(10, 50), то движение курсора будет ограничено следующим образом по координате x: 10<=mx<=50}
procedure mrowrange(min, max:integer);
{Процедура, подобная mcolrange, но ограничения устанавливаются по y}
{Остальные процедуры в рамках данной лабораторной работы рассматриваться не будут}
procedure mgraphcursor(hhot, vhot: integer; maskseg, maskofs: word);
procedure mtextcursor(ctype, p1, p2: word);
procedure mmotion(var moved: moverec);
procedure minsttask(mask, taskseg, taskofs: word);
procedure mlpenon;
procedure mlpenoff;
procedure mratio(horiz, vert: integer);
implementation
…
Примечание. Процедуры mpos, mpressed, mreleased обычно используют в цикле, где проверяют состояние мыши. Там же программист задает реакцию (необходимые действия) на происходящие события.