Операционная система UNIX. Руководство программиста

     

Программа window


Эта программа представляет собой пример работы со многими окнами. Основная информация содержится в stdscr. Если на физический экран нужно временно вывести что-либо еще, создается новое окно, покрывающее часть экрана. Обращение к wrefresh() для этого окна приводит к тому, что его содержимое записывается на экран терминала поверх содержимого stdscr. Последующий вызов refresh() для stdscr приводит к восстановлению экрана. Обратите внимание на вызов подпрограммы touchwin() [мы не упоминали о ней ранее, см. curses(3X)], который производится перед выводом содержимого окна поверх того окна, которое уже находится на экране. Эта подпрограмма препятствует оптимизации работы с экраном. Если у Вас возникают проблемы с выводом одного окна поверх другого, для нормальной работы следует предварительно вызывать touchwin() для нового окна.

#include <curses.h>

WINDOW *cmdwin;

main () { int i, c; char buf [120]; void exit ();

initscr (); nonl (); noecho (); cbreak ();

cmdwin = newwin (3, COLS, 0, 0); /* Верхние 3 строки */ for (i = 0; i < LINES; i++) mvprintw (i, 0, "Это строка %d окна stdscr", i);

for (;;) { refresh (); c = getch (); switch (c) { case 'c': /* Ввод команды с клавиатуры */ werase (cmdwin); wprintw (cmdwin, "Введите команду:"); wmove (cmdwin, 2, 0); for (i = 0; i < COLS; i++) waddch (cmdwin, '-'); wmove (cmdwin, 1, 0); touchwin (cmdwin); wrefresh (cmdwin); wgetstr (cmdwin, buf); touchwin (stdscr);

/* Теперь команда находится в буфере. В этом месте должны располагаться операторы для ее обработки */

case 'q': endwin (); exit (0); } } }



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