我正在尝试将文本阅读器/伪命令行设为la man
,但我很难按照我喜欢的方式滚动文本。起初我在滚动时遇到新文本时遇到了麻烦,但最终我发现垫片会为我修复,我现在正在整合它们。
我的问题是,我怎样才能将文字包裹在垫内?我的程序当前调整大小时会自动刷新,因此将pad定义为具有与终端一样多的列将无法修复所有内容。当我的终端收到KEY_RESIZE
时,我可以根据需要让垫自动调整大小吗?不仅仅是显示的尺寸,还有垫的尺寸,这样由于垫的末端,文本被向下推。另外,调整大小仍会保留文本,必要时将其向下移动,或者我是否需要刷新打击垫的内容?
不幸的是,我很难找到具有这些细节的资源,而ncurses中的文档没有详细说明调整pad的大小。
非常感谢!
回答后编辑:ncurses没有这样做,所以我打算尝试制作一些字符串数组,一个用于存储文件中的文本(在\n
处断开),另一个用于换行(在KEY_RESIZE
上刷新,每个字符串具有终端行的最大长度),其部分基于滚动位置等打印到主体窗口。我正在进行此编辑,以便将来看到此问题的任何人都能看到我的解决方案。我还没有这样做,所以如果它失败我会再次编辑它。再次感谢Stack Overflow帮助解决这个问题!
在这种情况下,ncurses不会做你想要的事情:
addch
将换行 - 但是用于在pad中显示数据的视口不是窗口,并且在pad的右侧包裹不一定与该视口相关。如果你想调整大小并重新包装,你的程序应该允许重写窗口中的所有文本(按照你的意图进行布局),而不是依靠ncurses来决定如何重新包装文本。