我已经看到有关SO处理窗口大小调整的其他一些问题,例如ncurses - resizing glitch
该问题中的代码有一个for循环,用于在调整大小后重绘窗口的内容。
我的问题是:是否有可能,而不是在调用clear()
之后和调用refresh()
之前重新打印窗口,让curses使用已经在输出缓冲区中的文本?< / p>
即,“重排”文本,而不是清除/重新打印?
我有一个相当复杂的ncurses应用程序,多个窗口正在被多个线程更新,我真的看不到这样做的干净方法。
答案 0 :(得分:0)
要直接回答你的问题,没有办法“重排”或让ncurses处理文本的调整。
但是你可以使用面板库(它是ncurses的一部分)来处理窗口。使用面板,您可以通过set_panel_userptr附加任意用户数据。您可以使用它来为每个可以调整内容大小的面板存储回调函数。
你的resize处理程序可以遍历调用resize回调的所有面板。
作为旁注,ncurses不是线程安全的。确保你的线程安全地使用ncurses。