Основы программирования в Linux
Шрифт:
Оптимизация обновлений экрана
Как вы видели в примере из упражнения 6.4, обновление множественных окон требует некоторой ловкости, но не слишком обременительно. Но может возникнуть более серьезная проблема, если нуждающийся в обновлении терминал подключен через медленное сетевое соединение. К счастью, в наши дни с ней сталкиваются очень редко, но ее обработка настолько легка, что мы рассмотрим ее просто для полноты картины.
Задача состоит в минимизации количества символов, прорисовываемых на экране, поскольку при наличии медленных линий связи рисование на экране может оказаться утомительно долгим. Библиотека curses предлагает специальный метод обновления экрана с помощью пары функций
Функция
Вложенные окна
Теперь, когда мы рассмотрели множественные окна, остановимся на специальном случае множественных окон, называемом вложенными окнами или подокнами. Создаются и уничтожаются вложенные окна с помощью следующих вызовов:
У функции
На первый взгляд вложенные окна кажутся бесполезным экспериментом. Почему не изменять просто родительское окно? Основная сфера их применения — предоставление простого способа прокрутки другого окна. Потребность в прокрутке небольшой области экрана удивительно часто возникает при написании программ с использованием curses. Создав вложенное окно и прокручивая его, вы добьетесь желаемого результата.
Одно ограничение, накладываемое на применение вложенных окон, заключается в необходимости перед обновлением экрана вызвать в приложении функцию
Выполните упражнение 6.5.
Теперь, когда вы познакомились с новыми функциями, этот короткий пример покажет, как они действуют и чем отличаются от функций окна, применявшихся ранее.
1. Начальная секция кода программы subscl.c инициализирует отображение базового окна с некоторым текстом:
2. Теперь создайте новое подокно с прокруткой. Как рекомендовалось, вам следует перед обновлением экрана "коснуться" родительского окна:
3. Сотрите содержимое вложенного окна, выведите в нем текст и обновите его. Прокрутка текста обеспечивается циклом:
4. Завершив цикл, удалите вложенное окно и обновите основной экран:
К концу программы вы увидите вывод, показанный на рис. 6.6.
Рис. 6.6
Как это работает
Чистильщик
Детективы:
боевики
рейтинг книги
Исторический материализм
Научно-образовательная:
история
философия
политика
рейтинг книги
Ветхий Завет. Перевод и комментарии
Религия и эзотерика:
прочая религиозная литература
рейтинг книги
Эволюционер из трущоб. Том 5
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Экспансия (сборник)
Шедевры отечественной фантастики
Фантастика:
научная фантастика
рейтинг книги
Одержимый
Top Thriller
Детективы:
триллеры
маньяки
рейтинг книги