使用尺寸大于屏幕的 newpad 时出现问题

Problems using newpad with a size larger than the screen

我正在尝试滚动一些比屏幕大的文本。

文档说 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();
}

行为有点奇怪。

如果行数或行数大于视口,则最后两个prefresh参数最多必须分别为LINES - 1COLS - 1

prefresh(pad, 0, 0, 0, 0, LINES - 1, COLS - 1);

如果小于,则无需减去 1,因为代码会按预期工作。