Mir-knigi.online
Книги онлайн читать бесплатно!
  • Главная
  • Жанры
  • ТОП книг
  • ТОП авторов
  • Контакты

Основы программирования в Linux

Часть 98 из 324 Информация о книге

Атрибуты символов

У всех символов, обрабатываемых curses, могут быть определенные атрибуты, управляющие способом отображения символа на экране при условии, что оборудование, применяемое для их отображения, поддерживает требуемый атрибут. Определены следующие атрибуты:

A_BLINK
,
A_BOLD
,
A_DIM
,
A_REVERSE
,
A_STANDOUT
и
A_UNDERLINE
. Вы можете использовать перечисленные далее функции для установки атрибутов по одному или все вместе.

<b>#include &lt;curses.h&gt;</b>

<b>int attron(chtype attribute);</b>

<b>int attroff(chtype attribute);</b>

<b>int attrset(chtype attribute);</b>

<b>int standout(void);</b>

<b>int standend(void);</b>

Функция

attrset
устанавливает атрибуты curses, функции
attron
и
attroff
включают и отключают заданные атрибуты, не портя остальные, а функции
standout
и
standend
обеспечивают более выразительный режим выделения или "лучший из всех" режим. На большинстве терминалов выбирается инверсия.

Выполните упражнение 6.2.

Упражнение 6.2. Перемещение, вставка и атрибуты

Теперь, когда вы знаете больше об управлении экраном, можно испытать более сложный пример moveadd.c. Вы включите несколько вызовов функций

refresh
и
sleep
в этот пример, чтобы на каждом шаге видеть, как выглядит экран. Обычно программы с использованием библиотеки curses стараются обновлять экран как можно реже, поскольку это не слишком высокопроизводительная операция. Программный код написан с некоторой долей искусственности для обеспечения большей наглядности.

1. Для начала вставьте несколько заголовочных файлов, определите несколько символьных массивов и указатель на них, а затем инициализируйте структуры библиотеки curses:

#include &lt;stdio.h&gt;

#include &lt;unistd.h&gt;

#include &lt;stdlib.h&gt;

#include &lt;string.h&gt;

#include &lt;curses.h&gt;

int main() {

 const char witch_one[] = &quot; First Witch &quot;;

 const char witch_two[] = &quot; Second Witch &quot;;

 const char *scan_ptr;

 initscr();

2. Теперь для трех начальных текстовых фрагментов, которые появляются на экране через определенные интервалы, включите и отключите соответствующие флаги атрибутов;

 move(5, 15);

 attron(A_BOLD);

 printw(&quot;%s&quot;, &quot;Macbeth&quot;);

 attroff(A_BOLD);

 refresh();

 sleep(1);

 move(8, 15);

 attron(A_STANDOUT);

 printw(&quot;%s&quot;, &quot;Thunder and Lightning&quot;);

 attroff(A_STANDOUT);

 refresh();

 sleep(1);

 move(10, 10);

 printw(&quot;%s&quot;, &quot;When shall we three meet again&quot;);

 move(11, 23);

 printw(&quot;%s&quot;, &quot;In thunder, lightning, or in rain ?&quot;);

 move(13, 10);

 printw(&quot;%s&quot;, &quot;When the hurlyburly's done, &quot;);

 move(14, 23);

 printw(&quot;%s&quot;, &quot;When the battle's lost and won.&quot;);

 refresh();

 sleep(1);

3. Действующие лица идентифицированы, и их имена выводятся посимвольно:

 attron(A_DIM);

 scan_ptr = witch_one + strlen(witch_one) - 1;

 while (scan_ptr != witch_one) {

  move(10, 10);

  insch(*scan_ptr--);

 }

 scan_ptr = witch_two + strlen(witch_two) - 1;

 while (scan_ptr != witch_two) {

  move(13, 10);

  insch(*scan_ptr--);

 }

 attroff(A_DIM);

 refresh();

 sleep(1);

4. В заключение переместите курсор в правый нижний угол экрана, а затем подготовьте и выполните завершение:

 move(LINES - 1, COLS - 1);

 refresh();

 sleep(1);

 endwin();

 exit(EXIT_SUCCESS);

}

Когда вы выполните программу, заключительный экран будет выглядеть так, как показано на рис. 6.3. К сожалению, снимок экрана не дает полного впечатления и не показывает курсор, установленный в правом нижнем углу экрана. Эмулятор xterm может быть более подходящей средой для точного отображения программ, чем обычная консоль.

Основы программирования в Linux - image014.jpg

Рис. 6.3

Как это работает

После инициализации некоторых переменных и экрана с помощью библиотеки curses вы применили функции

move
для перемещения курсора по экрану. Посредством функций
attron
и
attroff
вы управляли атрибутами текста, выводимого в заданную точку экрана. Далее перед закрытием библиотеки curses и завершением программа продемонстрировала, как вставлять символы функцией
insch
.

Клавиатура

Наряду с предоставлением интерфейса, облегчающего управление экраном, библиотека curses также предлагает средства, облегчающие управление клавиатурой.


Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело
  • Деловая литература
  • Детективы и триллеры
  • Детские
  • Детские книги
  • Документальная литература
  • Дом и дача
  • Дом и Семья
  • Жанр не определен
  • Зарубежная литература
  • Знания и навыки
  • История
  • Компьютеры и Интернет
  • Легкое чтение
  • Любовные романы
  • Научно-образовательная
  • Образование
  • Поэзия и драматургия
  • Приключения
  • Проза
  • Прочее
  • Психология и мотивация
  • Публицистика и периодические издания
  • Религия и духовность
  • Родителям
  • Серьезное чтение
  • Спорт, здоровье и красота
  • Справочная литература
  • Старинная литература
  • Техника
  • Фантастика и фентези
  • Фольклор
  • Хобби и досуг
  • Юмор
Mir-knigi.online

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • [email protected]
Информация
  • Карта сайта
© mir-knigi.online, 2026. | Вход