保持窗口内容ncurses

时间:2015-05-11 09:36:18

标签: c ncurses

我希望有多个具有ncurses的完整终端窗口,并且能够切换窗口。

伪代码:

write "Hello" in window 1
switch to window 2 and write "Hi"
go back to window 1 and write "how are you?"

问题是最初的"你好"在写作时被清除"嗨"在窗口2中。 如何逃避这一切最终"你好,你好吗?"在窗口1?

1 个答案:

答案 0 :(得分:1)

此问题的常见原因是在窗口上运行wgetch会在同一窗口中执行相应的wrefresh。作为一种特殊但频繁的案例,getch会刷新标准屏幕stdscr

  

如果窗口不是打击垫,并且自上次调用 wrefresh 后移动或修改了该窗口,则 wrefresh 将是   在读取另一个字符之前调用。

冲突刷新的确切性质当然取决于实际的程序。

建议panel库一般用于解决此问题。在从程序切换到的窗口获取字符之前,您可以(小心)使用touchwin解决问题。如果在窗口之间切换焦点(用于输入)时完成此操作,则它可以很好地工作。但是,我想到了一些可能的问题:

  • 如果输入来自一个窗口,并且两个正在更新 - 但它们重叠 - 将看不到另一个窗口的模糊部分。
  • 如果重新绘制是为了显示来自两个进程的状态(而不是等待输入),则竞争wrefresh可能会很慢并且分散注意力。