2

我已经看到了一些关于 SO 处理窗口大小调整的其他问题,例如ncurses - 调整大小故障

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

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

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

我有一个相当复杂的 ncurses 应用程序,其中多个窗口由多个线程更新,我真的看不到一个干净的方法来做到这一点。

4

1 回答 1

0

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

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

您的调整大小处理程序可以遍历所有调用调整大小回调的面板。

附带说明一下,ncurses 不是线程安全的。确保您的线程安全地使用 ncurses。

于 2013-05-03T16:31:45.197 回答