NCurses刷新

Tim*_*Tim 11 c ncurses

我有一个小的ncurse程序我正在运行,但输出似乎没有显示,除非我坚持wrefresh()在while循环.

是否有一些缓冲正在进行?我试过其他refresh功能在图书馆和fflushstddout(我不认为是有道理的,但值得一试),但似乎没有任何工作.

第二个小问题:要进行getch()非阻塞,我们需要打电话nodelay(win,TRUE),对吧?


void main()
{
        initscr();
        start_color();
        init_pair(1,COLOR_YELLOW,COLOR_CYAN);
        WINDOW *win = newwin(10,10,1,1);
        wbkgd(win,COLOR_PAIR(1));
        wprintw(win,"Hello, World.");
        wrefresh(win);
        getch();
        delwin(win);
        endwin();
}

caf*_*caf 20

你不应该混合操作stdscr和创建的窗口newwin(). getch()继续运作stdscr,这是你的问题.用.替换该呼叫

wgetch(win);
Run Code Online (Sandbox Code Playgroud)

(getch()导致stdscr被转移到另一个窗口的顶部,因为这种情况发生得太快,看起来其他窗口根本就没有显示出来).