Практика программирования (Бейсик, Си, Паскаль)



         

Красивые окна в текстовом режиме - часть 7


{

char s; int i ;

for(i=0; i<nc && string[i] != 0x00; i++)

{

s=string[i]; xy_s_out(row,col+i, s);

}

}

Программа s_out_r — вывод строки в полосу с прижимом вправо

Если ширина полосы превышает длину строки, то вычисляется начальная позиция строки в полосе, при которой последний символ строки попадает в последнюю позицию полосы, и вывод осуществляется по функции st_out_1. Если длина выводимой строки превышает ширину отведенной полосы, то у строки отсекаются лишние символы с начала и остаток строки заполняет полосу целиком.

void st_out_r(int row,int col,int nc, char *string)

// row,col - начало полосы,

//nc - длина полосы,

// string - выводимая строка

{

int ls,i;

ls=strlen(string);

i=nc-ls;

if(Is <= nc)

st_out_l(row,col+i,Is,string);

else

st_out_l(row,col,nc, &string[i] ) ; }

Программа ask__page — опрос активной страницы

Вместо этой функции вызывающая программа может проанализировать значение глобальной переменной _PAGE.

int ask_page(void) {

return (_PAGE); }

Программа set_page — установка текущей страницы

Помимо записи номера активной страницы в глобальную переменную _PAGE, необходимо довести эту информацию и до BIOS с помощью подфункции номер 5.

void set_page(int p) //р - номер, от 0 до 7 {

if(p>=0 && р<8)

{

_PAGE=p;

AH=5;

AL=p;

INT10h; } else err_out("Ошибка при вызове set_page");

}

Программа err_out — вывод сообщения об ошибке

Сообщение об ошибке выдается красными мигающими буквами в самой нижней строке экрана. После вывода сообщения делается выдержка до нажатия любой клавиши.

void err_out (char *string) {

set_attr(7,4,1,1);

st_out_l(25,1,80,string);

getch(); }

Программа init_txt — инициализация пакета text_box

void init_txt (void)

/*********************************************/

/* Инициализация экрана в текстовом режиме : */

/* размер экрана -25x80 */

/* маска символов - 8 х 14 */

/*********************************************/

{

extern union REGS reg;




Содержание  Назад  Вперед