С для профессиональных программистов



         

Отображение строки в определенном цвете. - часть 2


union REGS r;

char x,y;

read_cursor_xy(&x,&y); /* получение текущей позиции курсора

*/

while (*s)

if (*s == '\n')   /* обработка символа новой строки */

printf("\n");

s++;

x = 0; y++;  /* переход на следующую строку */

continue;

r.h.ah         =   9; /* функция отображения символа и его атрибутов */

r.h.al          =   *s++;    /* отображаемый символ */

r.h.bl          =   color;   /* атрибуты цвета */

r.h.bh        =   0;       /*видеостраница 0 */

r.x.cx          =   1; /* отобразить за единицу времени ( такт ) */

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

x++;

goto_xy(x,y); /* перемещение курсора */

Как вы можете видеть, отображаемый символ запоминается в регистре AL, атрибуты цвета символа - в регистре BL, номер видеостраницы - в регистре BH, а количество интервалов времени (тактов процессора), за которое будет отображен символ - в регистре CX. Заметим, что функция также обрабатывает специальный символ новой строки ('\n'). Вы можете также, по желанию, организовать обработку символов табуляции ('\t'), двойных кавычек (") и других специальных символов.

Использование функции color_puts() предполагает наличие ряда макроопределений в начале вызывающей функцию программы. Перечень макроопределений представлен ниже

#define BLUE                                          1

#define GREEN                             2

#define RED                                          4

#define INTENSE                         8

#define BLUE_BACK    16

#define GREEN_BACK   32

#define RED_BACK                    64

#define BLINK                             128

Используя эти макросы, вы можете по своему усмотрению выдать

на экран строку текста на фоне установленного вами цвета, а также

саму строку в определенном вами цвете.  Вы можете также управлять

режимом отображения  строки  (повышенная  яркость  или мерцание).

Комбинируя цвета, режимы мерцания или повышенной яркости для одного или совокупности символов, вы можете добиться любого желаемого вами эффекта. Например, представленная ниже строка программы приведет к отображению строки "А это - текст" в режиме повышенной яркости в голубом (циановом) цвете:

color_puts("А это - текст",GREEN | RED | INTENSE );




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