Инициализация curses

В этом разделе рассмотрены команды, применяемые для инициализации curses.

Для инициализации curses применяются следующие команды:

Команда Описание
endwin Завершает работу библиотеки curses и очищает ее структуры данных
initscr Инициализирует библиотеку curses и ее структуры данных
isendwin Возвращает значение TRUE после вызова функции endwin, но до вызова функции wrefresh
newterm Настраивает новый терминал
setupterm Настраивает структуру TERMINAL библиотеки curses
В начале любой программы, применяющей функции curses, должен быть включен файл curses.h. Для этого укажите:
#include <curses.h>

Для работы с функциями управления окнами и экранами нужно предварительно вызвать функцию initscr или newterm. Эти функции сохраняют настройки терминала, а затем вызывают функцию setupterm, настраивающую терминал curses.

Приостановить работу библиотеки curses можно, например, с помощью системного вызова. Для восстановления работы необходимо вызвать функцию wrefresh или doupdate. Перед завершением программа, работающая с curses, должна вызвать функцию endwin. Эта функция восстанавливает исходные режимы терминала, перемещает курсор в левый нижний угол экрана и переводит терминал в текстовый режим.

Для большинства интерактивных полноэкранных программ требуется посимвольный метод ввода без эхоповтора. Для перехода в этот режим после вызова initscr вызовите функции cbreak и noecho. После этого для получения ввода можно применять следующие функции:
  • Функция nonl.
  • Функция intrflush со значением stdscr в параметреWindow и FALSE в параметре Flag. Параметр Window обязателен, но его значение игнорируется. Поэтому в параметре Window можно указать уже существующую структуру stdscr.
  • Функция keypad со значением stdscr в параметре Window и значением TRUE в параметре Flag.

Функция isendwin позволяет повысить эффективность работы программы путем исключения лишних вызовов wrefresh. Функция isendwin позволяет выяснить, запускалась ли функция wrefresh после последнего вызова endwin.