我希望有多个具有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?
答案 0 :(得分:1)
此问题的常见原因是在窗口上运行wgetch
会在同一窗口中执行相应的wrefresh
。作为一种特殊但频繁的案例,getch
会刷新标准屏幕stdscr
:
如果窗口不是打击垫,并且自上次调用 wrefresh 后移动或修改了该窗口,则 wrefresh 将是 在读取另一个字符之前调用。
冲突刷新的确切性质当然取决于实际的程序。
建议panel
库一般用于解决此问题。在从程序切换到的窗口获取字符之前,您可以(小心)使用touchwin
解决问题。如果在窗口之间切换焦点(用于输入)时完成此操作,则它可以很好地工作。但是,我想到了一些可能的问题:
wrefresh
可能会很慢并且分散注意力。