在NCurses中滚动但包裹的键盘

时间:2019-03-18 20:19:37

标签: c++ ncurses

我试图将文本阅读器/伪命令行设置为man,但是我很难使文本滚动到想要的样子。最初,我在滚动时无法显示新文本时遇到麻烦,但最终我发现填充板将为我解决该问题,而我目前正在集成它们。

我的问题是,我怎样才能将文本包裹在笔记本中?目前,我的程序在调整大小时会自动刷新,因此将焊盘定义为与终端一样多的列并不能解决所有问题。当我的终端收到KEY_RESIZE时,我可以使键盘根据需要自动调整大小吗?不仅是显示的大小,还有垫子的大小,由于垫子的末端,文本被向下推了一行。此外,调整其大小仍会保留文本,如有必要,将其向下移动,还是需要刷新键盘的内容?

不幸的是,我在查找具有这些详细信息的资源时遇到了麻烦,ncurses中的文档并没有详细说明调整焊盘大小的行为。

非常感谢!


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

1 个答案:

答案 0 :(得分:1)

在这种情况下,

ncurses不会执行您的预期:

  • 面板就像一个窗口,是真的,addch会包裹起来-但您使用的 视口 在平板电脑中显示数据不是窗口,并且在平板电脑右侧包装不一定与该视口有关。
  • 一旦文本被换行,ncurses将不记得那是什么,并且如果您调整窗口(或填充)的大小,则重新换行。
  • 当您只想显示窗口的一部分时,例如,如果屏幕的大小不足以显示您要显示的文本时,键盘非常有用。

如果要调整大小和重新包装,程序应允许重写窗口中的所有文本(按照您的意愿进行布局),而不必依赖ncurses来决定如何重新包装文本。 / p>