Используя пример кода 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 будет вызван перед прочтением другого символа.

Другие вопросы по тегам