Руководство программиста для Linux
4b61df3a

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


* WINDOW *initscr()

Обычно это первая функция, вызываемая из программы, использующей ncurses. В некоторых случаях полезно вызывать slk_init(int), filter(), ripoffline(...) или use_env(bf) перед initscr(). Для работы с несколькими терминалами (или тестирования возможностей системы) вы можете использовать newterm(...) вместо initscr(). initscr() прочитает terminfo файл и установит структуры данных ncurses, выделит память для curscr и stdscr и проинициализирует переменные LINES и COLS значениями, соответствующими вашему терминалу. Будет возвращен указатель на stdscr или ERR в случае ошибки. Вам НЕ нужно инициализировать указатель. stdscr=initscr(); поскольку initscr() сделает это за вас. Если возвращен ERR, ваша программа должна завершиться, поскольку ни одна функция ncurses не будет работать: if(!(initscr())){ fprintf(stderr,"type: initscr() failed\n\n"); exit (1); }

* SCREEN *newterm(char *type, FILE *outfd, FILE *infd)

Работая в ncurses с несколькими терминалами, вы должны вызвать для каждого из них newterm(...) вместо initscr(). type - это имя терминала как оно содержится в $TERM (ansi, xterm, vt100, например); outfd - это указатель для вывода, infd - указатель для ввода. Для каждого терминала, открытого newterm(...), следует вызывать endwin().

* SCREEN *set_term(SCREEN *new)

При помощи set_term(SCREEN) вы можете переключать текущий терминал. Все функции будут работать с текущим терминалом, установленным set_term(SCREEN).

* int endwin()

endwin() произведет очистку, восстановит режимы терминала, сохраненные перед вызовом initscr(), и поставит курсор в левый верхний угол экрана. Не забудьте закрыть все окна перед тем, как вызвать endwin(), перед выходом из вашей программы. Дополнительный вызов refresh() после endwin() восстановит содержимое терминала, отображавшееся до вызова initscr() (visual-mode), в противном случае экран будет очищен (non-visual-mode).

* int isendwin()

Возвращает TRUE, если после endwin() была вызвана refresh(), иначе - FALSE.

* void delscreen(SCREEN *sp)

Вызывается после endwin() для высвобождения всех занятых ресурсов, когда SCREEN больше не нужен. (Пока не реализована.)



Содержание раздела