TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

4.2.6. Форма указателя

Процедура ShowMouse. Показывает указатель мыши. Заголовок. Procedure ShowMouse.

Процедура HideMouse. Гасит указатель мыши. Заголовок:

Procedure HideMouse.

Как уже отмечалось, драйвер мыши ведет подсчет обращений к функциям 1 и 2 (показать/убрать указатель). Чтобы исключить неоднозначную реакцию, процедуры ShowMouse и HideMouse проверяют внутренний флаг Mouse Visible и осуществляют обращение к этим функциям только в том случае, когда это действительно необходимо. Если указатель уже виден на экране, игнорируется вызов ShowMouse, наоборот, если указатель погашен, игнорируется вызов HideMouse.

Следует заметить, что при работе со стандартными процедурами модуля Crt, а также при нормальном выводе на экран процедурами Write/WriteLn Турбо Паскаль организует прямой доступ к видеопамяти. Поэтому полезно использовать HideMouse перед любым изменением содержимого экрана.

Процедура MouseTextCursor. Определяет вид указателя для текстового режима. Заголовок:

Procedure MouseTextCursor(ScrMask,CurMask: Word).

Здесь ScrMask — маска экрана; CurMask — маска указателя. Напомню, что драйвер мыши формирует указатель следующим образом:

читается слово видеопамяти, содержащее символ и атрибуты нужной позиции экрана; к этому слову применяется операция AND с маской экрана, а к полученному результату — операция XOR с маской указателя. Таким образом, если ScrMask == 0, указатель имеет форму символа, содержащегося в младшем байте маски CurMask, а атрибуты указателя (цвет и признак мерцания) задаются страшим байтом этого слова.

Процедура MouseBlink. Определяет указатель в виде мигающего курсора. Заголовок:

Procedure MouseBlink(YUp,YDn: Byte);

Здесь YUp, YDn — номера верхней (YUp) и нижней (YDn) строк развертки.

После обращения к этой процедуре указатель мыши имеет вид мигающего курсора. Замечу, что сам текстовый курсор не меняет своего положения при перемещении мыши — драйвер «заимствует» его изображение для создания указателя. Параметры YUp и YDn определяют размер указателя: первый параметр задает номер верхней, а второй — нижней строк развертки, в пределах которых мигает курсор. Стандартный курсор соответствует YUp = 6 и YDn = 7, т.е. занимает две нижние строки (нумерация строк от 0 до 7). При YUp = 0 и YDn = 7 курсор занимает все знакоместо. Если при обращении YUp = $20, указатель не будет виден.

Процедура MouseGraphCursor. Определяет вид указателя в графическом режиме. Заголовок:

Procedure MouseGraphCursor(var ScrCurMask; X,Y: Byte).

Здесь ScrCurMask — 64—байтный массив, определяющий маску экрана и маску указателя; X,Y — смещение координатной точки относительно левого верхнего угла изображения.

Массив ScrCurMask должен содержать две 32—байтных маски, которые трактуются следующим образом. При выводе указателя драйвер осуществляет операцию AND над участком экрана размером 16х16 пиксел и первой половиной массива (маской экрана); затем к результату применяется операция XOR с второй половиной ScrCurMask [с маской указателя). Полученное рассматривается как битовая маска 16х16 пиксел, которая выводится в нужное место экрана как указатель мыши. Если, например, первая половина массива ScrCurMask (маска экрана) состоит из одних нулей, изображение указателя, определяемое второй половиной массива (маска указателя), выводится следующим образом: каждое 16—разрядное слово маски рассматривается как образ 16 пиксел в одной из строк развертки; если слово имеет значащий разряд, соответствующий пиксел светится, если 0, не светится.

Параметры Х и Y определяют смещение «центра» указателя от верхнего левого угла изображения. Если Х = Y = 0, координатная точка мыши соответствует верхнему левому углу изображения, если Х = У == 8 — центру изображения и т.д.

 

Глава 4

Оглавление

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz