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