ncurses窗口调整大小模式

时间:2013-05-02 17:24:40

标签: c resize ncurses

我已经看到有关SO处理窗口大小调整的其他一些问题,例如ncurses - resizing glitch

该问题中的代码有一个for循环,用于在调整大小后重绘窗口的内容。

我的问题是:是否有可能,而不是在调用clear()之后和调用refresh()之前重新打印窗口,让curses使用已经在输出缓冲区中的文本?< / p>

即,“重排”文本,而不是清除/重新打印?

我有一个相当复杂的ncurses应用程序,多个窗口正在被多个线程更新,我真的看不到这样做的干净方法。

1 个答案:

答案 0 :(得分:0)

要直接回答你的问题,没有办法“重排”或让ncurses处理文本的调整。

但是你可以使用面板库(它是ncurses的一部分)来处理窗口。使用面板,您可以通过set_panel_userptr附加任意用户数据。您可以使用它来为每个可以调整内容大小的面板存储回调函数。

你的resize处理程序可以遍历调用resize回调的所有面板。

作为旁注,ncurses不是线程安全的。确保你的线程安全地使用ncurses。