Используя пример кода ncurses, но нужно уточнить
Я компилирую некоторый код c, используя библиотеку ncurses, в gcc и Fedora. Код точно скопирован с http://techlister.com/linux/creating-menu-with-ncurses-in-c/1293/
Он прекрасно компилируется, но когда я манипулировал кодом, я хотел понять некоторые тонкости ncurses - в частности, его схему обновления экрана. Я читал в нескольких местах (этот сайт и в других местах) такие заявления, как:
Процедуры refresh и wrefresh (или wnoutrefresh и doupdate) должны вызываться для получения фактического вывода на терминал, так как другие процедуры просто манипулируют структурами данных.
Я интерпретирую это как значение, если я вызываю такие вещи, как mvwprintw(), я манипулирую только тем, что составляет виртуальное окно, и чтобы мои изменения действительно появлялись, мне нужно вызвать wrefresh(). Однако код, который я скопировал, вызывает только wrefresh () один раз в верхней части и, кажется, перекрашивает экран по мере необходимости.
ВОПРОС: Кто-нибудь может уточнить, когда нужно вызывать refresh () или wrefresh()?
Благодарю.
1 ответ
Другой wrefresh
происходит в этой линии
while(( ch = wgetch(w)) != 'q'){
потому что (как отмечено в wgetch
страница справочника):
Если окно не является пэдом, и оно было перемещено или изменено с момента последнего вызова
wrefresh
,wrefresh
будет вызван перед прочтением другого символа.