Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Работа с текстовой информацией



Вывод информации на экран персонального компьютера может выполняться на трех уровнях:

1) на уровне MS-DOS с использованием функций прерывания 21h

2) на уровне BIOS с использованием функций прерывания 10h

3) непосредст­венным доступом к аппаратным средствам.

Вывод информации на уровне MS-DOS - мобильный, но самый медленный. Функции MS-DOS для вывода информа­ции на экран вызывают драйвер консоли (выполняют вывод в специальный символьный файл CON). Если в системе инс­таллирован специальный драйвер (например, ANSI.SYS), мо­гут использоваться дополнительные средства по управлению экраном. Суть расширенного управления состоит в передаче драйверу консоли ("выводе" на экран) специальных управля­ющих строк. Драйвер опознает начало управляющей строки по символу ASCII 27 (1Bh). Передаваемые на экран вслед за ним символы рассматриваются как параметры команды, ко­торую выполняет драйвер, например, перемещает курсор, ус­танавливает цвет символа и т.п. Сами управляющие символы не отображаются на экране. Таким образом, использование функций MS-DOS позволяет пропустить вывод через драйвер. Другие достоинства функций MS-DOS - автоматическое по­зиционирование курсора и скроллинг экрана, реакция на на­жатие комбинации клавиш Ctrl-Break. Недостатком является невозможность непосредственного управления курсором и ат­рибутом символов. На уровне MS-DOS работают функции стан­дартного вывода Turbo С; их прототипы содержатся в файле <stdio.h>.

Вывод на уровне BIOS дает более широкие возможности по управлению экраном. Именно эти функции используются драй-

верами MS-DOS для вывода информации на экран. Недостат­ком функций BIOS является невысокая скорость вывода, что особенно заметно при работе в графических режимах. На уров­не BIOS работают функции консольного вывода Turbo С; их прототипы помещены в файле <conio.h>.

Для приложений, критичных по скорости вывода, прихо­дится выполнять вывод, используя непосредственный доступ к портам и видеопамяти адаптера. Такой способ позволяет достичь максимально возможной скорости вывода, но требует максимальных затрат труда программиста. Функции консоль­ного вывода Turbo С могут по выбору пользователя работать и на самом нижнем уровне, выполняя доступ к видеобуферу при работе в текстовом режиме.

Скроллинг. Очистка окна и всего экрана

Функции АН = 06 и 07 прерывания 10h BIOS осуществля­ют так называемый скроллинг (прокрутку) окна экрана. При выполнении скроллинга на одну строку вверх вся информа­ция в окне перемещается на строку вверх. Внизу окна появ­ляется чистая строка. При выполнении скроллинга на одну строку вниз содержимое окна сдвигается на строку вниз и ввер­ху окна добавляется чистая строка. Значение регистра AL за­дает число строк, на которое выполняется скроллинг. Если AL=0, выполняется очистка окна. Значения в СН и CL определяют строку и столбец левого верхнего угла окна, в DH и DL -строку и столбец правого нижнего угла. Строки и столбцы нумеруются от 0. Значение в регистре ВН задает атрибут до­бавляемой чистой строки.

Приведем пример Си-функции, выполняющей верти­кальный скроллинг окна экрана, заданного строкой и столбцом левого верхнего (l_row, l_col) и строкой и столбцом правого нижнего (r_row, r_col) углов окна. Если переменная direction равна UP, происходит скроллинг на одну строку вверх, если она равна DOWN - скроллинг на одну строку вниз, если ENTIRE -выполняется очистка окна. Добавляется строка с атрибутом attr.

 

#include < dos. h >

Void scroll (int direction, char l_row, char l_col, char r_row, char r_col, char attr)

{

Union REGS r;

If (direction)

{ r. h. a= 1; r.h. ah=direction; }

Else

{r.h.al=0; r.h.ah=6; }

r.h.ch = l_row; r.h.cl= l_col; r.h.dh = r_row;

r.h.dl= r_col; r.h.bh=attr;

int86(0x10,&r,&r);

}

Если окно занимает весь экран и задается direction = ENTIRE, происходит фактическая очистка всего экрана и его "заливка" цветом, задаваемым атрибутом чистой строки (attr). Напри­мер, для очистки экрана в режимах с 25 строками и 80 столбцами

Scroll(ENTIRE,0,0,24, 79,0x07);

Для получения цветной рамки по периметру всего экрана можно выполнить два обращения:

Scroll (ENTIRE, 0,0, 24, 79, color);

Scroll(ENTIRE, 1, 1, 23, 78, 0x07);

Здесь значение color - атрибут. Цвет рамки будет совпадать с цветом фона символа, так как символом является пробел.

Скроллинг окна средствами BIOS возможен как в текстовых, так и в графических режимах работы видеоадаптера. Скроллинг в графических CGA-режимах имеет некоторые особенности.

Одним из интересных применений скроллинга является по­строение "взрывающихся" окон (exploding windows). Такие окна "вырастают" на экране из определенного места (середи­ны, одного из углов, сначала заполняется средняя горизон­таль, а затем окно раздвигается вверх и т.п.). Секрет построе­ния "взрывающихся" окон прост. Начиная с определенного мес­та окна (например, его центра), выполняется очистка первого, самого маленького окна. После этого по периметру этого окна рисуется рамка. Затем координаты левого верхнего и правого нижнего углов модифицируются, и все повторяется: очистка ста­рой рамки скроллингом, вывод новой, большего размера, моди­фикация координат углов и так далее до тех пор, пока окно не "вырастет" до нормальных размеров.



Просмотров 917

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!