我正在乱砍一个使用5个窗口的ncurses应用程序:
请注意,有3个内容窗口,它们完全相互重叠。我手动决定要重绘哪个。标题栏和状态栏窗口不与任何其他窗口重叠。
一个用例是用户使用其中一个内容窗口中的菜单选择要上传到网络守护程序的文件。选择文件后,状态栏将作为原始进度条,绘制一些哈希值以指示文件的上传距离。
这归结为使用:
这样可行,但由于某种原因导致整个屏幕被重绘,导致可怕的闪烁乱七八糟。阅读手册后,我看不出为什么会这样;只要状态栏不与任何其他窗口重叠,重绘状态栏不应该导致整个屏幕重绘?
我是对的,还是我误解了?有办法防止这种情况吗?
代码在这里: https://github.com/vext01/hgd/blob/master/nchgdc.c#L812
请注意,代码很大程度上未完成且缺乏润色=)
我的ncurses实现是OpenBSD的实现。
答案 0 :(得分:0)
来自wclear手册页:
清晰明确的惯例就像擦除和擦除,但它们也是如此 调用clearok,以便在下次通话时完全清除屏幕 为那个窗口刷新并重新粉刷。