gpt4 book ai didi

c++ - 在 NCurses 中滚动但包裹垫

转载 作者:太空狗 更新时间:2023-10-29 22:54:33 27 4
gpt4 key购买 nike

我正在尝试使文本阅读器/伪命令行成为 la man,但我很难让文本按我希望的方式滚动。起初我在滚动时无法显示新文本,但最终我发现 pads 可以为我解决这个问题,我目前正在整合它们。

我的问题是,如何让文本在便笺簿中换行?我的程序当前在调整大小时会自动刷新,因此将 pad 定义为具有与终端一样多的列并不能解决所有问题。当我的终端收到 KEY_RESIZE 时,我能否让 pad 根据需要自动调整大小?不仅是显示的大小,还有 pad 的大小,这样文本就会由于 pad 的末端而被向下推一行。此外,调整它的大小是否仍会保留文本,必要时将其向下移动,或者我是否需要刷新 pad 的内容?

不幸的是,我无法找到包含这些细节的资源,而且 ncurses 中的文档没有详细说明调整 pad 大小的行为。

非常感谢!


回答后编辑:ncurses 不会这样做,所以我将尝试制作一些字符串数组,其中一个用于存储文件中的文本(在 \n 处断开),另一个用于换行(在 KEY_RESIZE 上刷新,每个字符串都有终端行的最大长度),其中一部分根据滚动位置等打印到主体窗口。我正在进行此编辑,以便将来看到此问题的任何其他人都可以看到我的解决方案。我还没有这样做,所以如果失败我会再次编辑。再次感谢 Stack Overflow 提供的帮助!

最佳答案

在这种情况下,ncurses 不会执行您想要的操作:

  • pad 就像一个窗口,是的,addch 会换行 -- 但是 viewport您用来在 pad 中显示数据的不是窗口,pad 右侧的环绕不一定与该视口(viewport)相关。
  • 一旦文本换行,ncurses 将不会记住那是什么,并且如果您调整窗口(或 pad)的大小时重新换行文本。
  • pad 主要在您只想显示窗口的一部分时有用,例如,如果屏幕不够大,无法显示您要显示的文本。

如果你想调整大小和重新换行,你的程序应该允许重写窗口中的所有文本(按照你的意图布局)而不是依赖 ncurses 来决定如何重新换行文本。

关于c++ - 在 NCurses 中滚动但包裹垫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com