【问题标题】:ncurses window resizing patternsncurses 窗口大小调整模式
【发布时间】:2013-05-02 17:24:40
【问题描述】:

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

那个问题中的代码有一个for循环来重绘窗口的内容在调整大小之后

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

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

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

【问题讨论】:

    标签: c resize ncurses


    【解决方案1】:

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

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

    您的调整大小处理程序可以循环访问所有调用调整大小回调的面板。

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

    【讨论】:

    • 那么你是在告诉我 elinks 和 cmus 和 vichess 和 都有回流代码吗?如果是这样,你能指出我这样做的“正确方式”/常见模式吗?我在任何地方都找不到这个。
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 2011-09-13
    • 1970-01-01
    • 2019-05-15
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多