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

时间:2016-09-10 11:47:19

标签: rust ncurses

我试图滚动一些大于屏幕的文字。

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

1 个答案:

答案 0 :(得分:0)

行为有点奇怪。

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

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

如果它更少,则无需减去1,因为代码将按预期工作。