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

Дисциплины:

Архитектура (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)


 

 

 

 



Void window(int l_t_col, int l_t_row,int r_b_col, int r_b_row)



Описывает активное текстовое окно: первая пара аргументов задает стол­бец и строку левого верхнего угла, вторая пара - правого нижнего угла. Строки и столбцы нумеруются, начиная от 1. Поэтому, например, координаты левого верхнего и правого нижнего углов экрана в режимах "25 строк х 80 столбцов" задаются парами (1,1) и (80,25). Обратите внимание на то, как в Turbo С задаются координаты углов: сначала столбец, затем строка. Другими словами, оси X и Y накладываются на экран так, как это показано на рис. 1.1.

 

Фрейм окна Turbo С имеет следующую структуру:

Struct text_ jnfo {unsigned char

wlnleft, wintop; /* столбец, строка левого верхнего угла */

winright, winbottom; /* столбец, строка правого нижнего угла */

attribute, normattr; /* атрибуты окна*/

currmode; /* текущий режим работы видеоадаптера */

screenheight; /* полная высота экрана */

screenwidth; /* полная ширина экрана */

сиrх, сиrу; }; /* строка, столбец текущей позиции курсора */

Информация об активном окне доступна при выполнении функции gettextinfo ( ):

#include <conio.h>

void gettextinfo( struct text_info *r)

Заполняет поля структурной переменной по шаблону text_info, на которую ссылается r. Шаблон структуры text_info, описывающей текущее окно экрана, содержится в заголовочном файле <conio.h>.

Функция window() инициализирует поля координат фрей­ма окна. Функции textcolor(), textbackground(), textattr() и другие управляют цветом отображаемых символов окна. Они рассмотрены далее.

 

Управление курсором

Видеоадаптеры всех типов аппаратно поддерживают курсор, который в текстовых режимах отображается на экране в виде одной или нескольких телевизионных линий в пределах тексела. Курсор отображает текущую позицию экрана (строку и столбец тексела), по которой будет записываться или читаться средства­ми BIOS символ. При переключении адаптера в графический режим курсор становится невидимым, но BIOS сохраняет воз­можность изменять его позицию. Специальные регистры CRT-контроллера хранят текущую позицию и форму курсора.

Прерывание 10h BIOS имеет в своем составе специальные функции для установки формы курсора, чтения и установки его координат.

Функция АН = 0lh задает "толщину" курсора. Регистр СН определяет номер верхней телевизионной линии, a CL - но­мер нижней линии при изображении курсора. Например, за­дав для монохроматического адаптера значения СН = 0, CL = 13, получим курсор, занимающий все знакоместо. Значения СН = 6, CL = 7 для CGA-адаптера устанавливают форму кур­сора по умолчанию - две равномерно мерцающие телевизион­ные строки в самом низу тексела. Если СН > CL, курсор будет состоять из двух групп телевизионных линий вверху и внизу знакоместа с разрывом посередине. BIOS поддерживает оди­наковую форму курсора для всех видеостраниц текста. Биты 5 и 6 кода СН управляют мерцанием и могут выключить ото­бражение курсора (табл. 1.2).

Табл. 1.2. Биты управления отображением курсора

 

Биты регистра СН Действие, оказываемое на курсор    
бит 6 бит 5
Видимый, мерцающий равномерно с нормальной ско­ростью курсор
Курсор не отображается
Видимый, мерцающий равномерно с повышенной ско­ростью курсор
Видимый, неравномерно мерцающий курсор

 

BIOS записывает текущую форму курсора в слово по адресу0040:0060h; младший байт содержит номер нижней телеви­зионной строки, старший - номер верхней телевизионной стро­ки для отображения курсора.

Управление формой курсора находит ограниченное приме­нение в практике программирования. Однако изменением фор­мы курсора можно отображать различные режимы работы про­граммы, например режим "Вставка" или режим "Переопреде­ление текста", выполненную фиксацию верхнего регистра кла­виатуры и т.п. Намного чаще приходится выключать курсор. Это необходимо, когда программа сама отображает курсор. Для алфавитно-цифровых режимов наиболее удобной собст­венной формой курсора является знакоместо с другим атрибу­том символа. Изменяя цвет, задаваемый атрибутом, програм­ма сообщает об изменении режима работы.

Среди функций консольного ввода-вывода Turbo С теку­щей позицией курсора в окне управляет функция gotoxy( ).

 

#include <conio.h>

Void gotoxy(intx, inty)

Устанавливает курсор в строку у и столбец х в текущем активном окне экрана. Верхний левый угол окна имеет координаты (1,1). При попытке по­зиционировать курсор за границы окна он останавливается на границе окна. Особенностью функции является то, что координаты х и у являются относи­тельными, приведенными к левому верхнему углу. Например, если текущее окно было описано функцией window(1,8,80,25);, обращение gotoxy(5,5); ус­тановит курсор в пятый относительный столбец окна (совпадает с абсолютным столбцом 4, отсчитываемым от 0) в пятой относительной строке (так как верх­няя строка окна задана равной 5, то абсолютная строка будет равна 5 + 5 - 1, если отсчет строк идет от 0).

Текущую позицию курсора в активном текстовом окне со­общают функции wherex () и wherey().

#include <conio.h>

Int wherex(void)

Int wherey(void)

Сообщают столбец и строку текущей позиции курсора; возвращают целое число в диапазоне соответственно от 1 до 80 и от 1 до 25.

Кроме того, текущая позиция курсора в окне возвращается в полях curx и сиrу структурной переменной по шаблону text_info, заполняемой при выполнении функции gettextinfo( ) .



Просмотров 777

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




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