我正在使用gcu和Fedora下的ncurses库编译一些c代码。代码完全从http://techlister.com/linux/creating-menu-with-ncurses-in-c/1293/
复制它编译得很好,但是当我操纵代码时,我想了解一些ncurses的细微之处 - 特别是它的屏幕刷新方案。我已经在多个地方(本网站和其他地方)阅读了如下语句:
必须调用refresh和wrefresh例程(或wnoutrefresh和doupdate)才能获得到终端的实际输出,因为其他例程只是操纵数据结构。
我认为这意味着如果我调用像mvwprintw()这样的东西,我只是在操纵虚拟窗口,并且为了让我的更改实际出现,我需要调用wrefresh()。但是我复制的代码只在顶部附近调用wrefresh(),并且似乎根据需要重新绘制屏幕。
问题:有人可以澄清何时需要调用refresh()或wrefresh()吗?
感谢。
答案 0 :(得分:1)
其他 wrefresh
正在此行中发生
while(( ch = wgetch(w)) != 'q'){
因为(如wgetch
manual page所述):
如果窗口不是打击垫,并且已被移动或 已修改 ,因为 最后一次致电
wrefresh
,wrefresh
将在另一个角色之前调用 正在阅读。