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