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


Введение в ncurses


В этом разделе будем пользоваться следующей терминологией.

  • окно (window) - внутреннее представление, содержащее изображение части экрана. WINDOW определен в ncurses.h.
  • экран (screen) - это окно размером в целый экран (с верхнего левого до нижнего правого угла). Экранами являются stdscr и curscr.
  • терминал (terminal) - специальный экран с информацией о том, как выглядит экран на данный момент.
  • переменные - следующие переменные и константы, определенные в ncurses.h:

  • WINDOW *curscr - текущий экран
  • WINDOW *stdscr - стандартный экран
  • int LINES - полосы на терминале
  • int COLS - колонки на терминале
  • bool TRUE - флаг истины, 1
  • bool FALSE - флаг лжи, 0
  • int ERR - флаг ошибки, -1
  • int OK - флаг ok, 0

  • функции - в описаниях функций аргументы будут следующих типов:
    • win - WINDOW*
    • bf - bool
    • ch - chtype
    • str - char*
    • chstr - chtype*
    • fmt - char*
    • иначе int

    Обычно программа, использующая ncurses, выглядит так: #include ... main() { ... initscr(); /* вызов функции ncurses */ endwin(); ... }

    Подключение ncurses.h определит переменные и типы для ncurses, такие как WINDOW, и прототипы функций. Автоматически подключатся stdio.h, stdarg.h, termios.h, unctrl.h.

    initscr() используется для инициализации структур данных ncurses и для чтения файла terminfo. Будет захвачена память под stdscr и curscr. Если произойдет ошибка, то initscr вернет ERR. В противном случае возвращается указатель на stdscr. Кроме этого, экран будет очищен и будут проинициализированы LINES и COLS.

    endwin() очистит все выделенные ресурсы ncurses и восстановит режимы tty, какими они были до вызова initscr(). Функция endwin() должна вызываться перед любой другой функцией из библиотеки ncurses и перед выходом из вашей программы. Если вы хотите использовать для вывода более чем один терминал, используйте newterm(...) вместо initscr().

    Компилируйте программу посредством: gcc [flags] files -lncurses

    Вы можете устанавливать любые флаги (см. gcc(1)). Если путь к ncurses.h изменился, вы должны включить следующую строку, иначе ncurses.h, nterm.h, termcap.h и unctrl.h не будут найдены: -I/usr/include/ncurses




    Начало  Назад  Вперед



    Книжный магазин