我试图滚动一些大于屏幕的文字。
文档说newpad
不受屏幕大小的限制,但使用大于终端可用列或行的值启动它时无法打印任何内容:
newpad(LINES + 1, COLS); // fails
newpad(LINES, COLS); // works
整个代码供参考:
extern crate ncurses;
use ncurses::*;
fn main() {
initscr();
start_color();
use_default_colors();
cbreak();
noecho();
curs_set(CURSOR_VISIBILITY::CURSOR_INVISIBLE);
let pad = newpad(1000, COLS);
refresh();
let mut x = 0;
while x < 1000 {
x += 1;
wprintw(pad, &format!("Line number {}\n", x));
}
prefresh(pad, 0, 0, 0, 0, LINES, COLS);
getch();
endwin();
}
答案 0 :(得分:0)
行为有点奇怪。
如果行数或行数大于视口,则最后两个prefresh
参数必须分别为LINES - 1
和COLS - 1
:
prefresh(pad, 0, 0, 0, 0, LINES - 1, COLS - 1);
如果它更少,则无需减去1,因为代码将按预期工作。