Читаем Основы программирования в Linux полностью

Для получения звука можно вызвать функцию beep. Немногие терминалы не способны издавать звуки, в этом случае некоторые установки библиотеки curses при вызове beep заставят экран мигать. Если вы работаете в густонаселенном офисе и звуковые сигналы могут издавать многие компьютеры, возможно, вы сочтете мигание предпочтительным режимом. Как и ожидалось, функция flash вызывает мигание экрана, если это невозможно, она попробует заставить терминал издать звуковой сигнал взамен.

<p>Считывание с экрана</p>

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

#include

chtype inch(void);

int instr(char *string);

int innstr(char *string, int number_of_characters);

Функция inch должна быть всегда доступна, а функции instr и innstr не всегда поддерживаются. Функция inch возвращает символ из текущей позиции курсора на экране и данные о его атрибутах. Обратите внимание на то, что функция возвращает значение не char, a chtype, в то время как функции instr и innstr пишут в массивы с элементами типа char.

<p>Очистка экрана</p>

Существует четыре основных способа очистки области экрана:

#include

int erase (void);

int clear(void);

int clrtobot(void);

int clrtoeol(void);

Функция erase записывает пробелы во все позиции экрана. Функция clear, как и erase, очищает экран, но вызывает перерисовку экрана с помощью внутреннего вызова низкоуровневой функции clearok, которая выполняет последовательность очистки экрана и новое отображение экрана при следующем вызове refresh.

Функция clear обычно применяет команду терминала, которая очищает весь экран, а не пытается стереть текущие непробельные символы во всех точках экрана. Это делает функцию clear надежным средством очистки экрана. Сочетание функции clear с последующей функцией refresh может обеспечить удобную команду перерисовки экрана в том случае, когда изображение на экране беспорядочно или испорчено каким-либо образом.

Функция clrtobot очищает экран, начиная с текущей позиции курсора и далее до конца экрана, а функция clrtoeol очищает экран, начиная с текущей позиции курсора до конца строки, в которой находится курсор.

<p>Перемещение курсора</p>

Для перемещения курсора применяется единственная функция с дополнительной командой, управляющей положением курсора после обновления экрана.

#include

int move(int new_y, int new_x);

int leaveok(WINDOW *window_ptr, bool leave_flag);

Функция move просто переносит позицию логического курсора в заданное место на экране. Напоминаем о том, что начало экранных координат (0, 0) находится в левом верхнем углу экрана. В большинстве версий библиотеки curses две глобальные целочисленные переменные, LINES и COLUMNS, определяют размер физического экрана и могут применяться для определения максимально допустимых значений параметров new_y и new_x. Вызов move сам по себе не приводит к перемещению физического курсора. Он только изменяет позицию на логическом экране, в которой появится следующий вывод. Если вы хотите, чтобы экранный курсор переместился немедленно после вызова функции move, вставьте следом за ним вызов функции refresh.

Функция leaveok устанавливает флаг, управляющий положением курсора на физическом экране после его обновления. По умолчанию флаг равен false, и после вызова refresh аппаратный курсор остается в той же точке экрана, что и логический курсор. Если флаг равен true, аппаратный курсор можно оставить в случайно выбранной точке экрана. Как правило, значение, устанавливаемое по умолчанию, предпочтительней, т.к. курсор остается в не лишенной смысла позиции.

<p>Атрибуты символов</p>

У всех символов, обрабатываемых curses, могут быть определенные атрибуты, управляющие способом отображения символа на экране при условии, что оборудование, применяемое для их отображения, поддерживает требуемый атрибут. Определены следующие атрибуты: A_BLINK, A_BOLD, A_DIM, A_REVERSE, A_STANDOUT и A_UNDERLINE. Вы можете использовать перечисленные далее функции для установки атрибутов по одному или все вместе.

#include

int attron(chtype attribute);

int attroff(chtype attribute);

int attrset(chtype attribute);

int standout(void);

int standend(void);

Перейти на страницу:

Похожие книги

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

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT