我正在尝试使用文本滚动来实现一个ncurses应用程序.建议的方法是什么?
这就是我所知道的:
scroll向上或向下移动文本缓冲区1行.但是,如果向下滚动,最后会在顶部显示一个空白行;如果向上滚动,则最后会在底部显示空白行,您必须自己重新绘制.我想我可以自己重新实现wordwrap并保留所有post-wrapped行的数组,但这似乎是一个常见的问题,所以可能有更好的方法.
答案取决于您有多少文本,以及您对屏幕上的数据的其他用途。但通常pad功能是显示可滚动文本的首选方式。这不仅是ncurses 的一个特性,而且大多数 Curses 的实现(即 20 世纪 80 年代后期之后的任何实现)都支持该功能。
pad就像一个窗口,但它的大小不限于当前屏幕大小。相反,数据通过视图显示,该视图在焊盘内的位置可以轻松更改。
有两个ncurses-examples相关的示例程序:view.c通过将文件内容写入窗口来显示文件,同时padview.c使用在其上绘制整个文件的 pad,并使用 pad 功能根据需要向上/向下移动视图、和左/右。
在这些程序中,该函数执行实际绘图,并且与等效的(94 行)相比,show_all其长度约为(35 行)的三分之一。padview.cview.c
进一步阅读:view作为比较 ncurses 和俚语库的示例的讨论。
ncurses 只知道当前屏幕。当屏幕滚动时,ncurses 不会跟踪离开屏幕的任何文本。您的终端可能有一个向后滚动缓冲区,但它独立于 ncurses,并且curses 无法看到终端的向后滚动缓冲区。
我希望如果您需要滚动,您将需要跟踪文件中的当前位置。
我不认为 ncurses 会自动换行,你是如何自动换行的?
| 归档时间: |
|
| 查看次数: |
4737 次 |
| 最近记录: |