需要刷新而不是刷新?

Dr *_*eco 5 ncurses

为什么这段代码在这里:

#include <ncurses.h>
#define WIN 5
#define WI win[0]
#define WC win[1]

int ymax, xmax;
WINDOW *win[WIN];

int main(void)
{

    int i;
    initscr();
    cbreak();
    start_color();
    curs_set(0);
    noecho();
    init_pair(1,COLOR_GREEN,COLOR_BLACK);

    getmaxyx(stdscr, ymax, xmax);
    for(i=0; i<WIN; i++)
        win[i]= newwin(ymax, xmax, 0, 0);
    keypad(stdscr, TRUE);   /* We get F1, F2 etc..      */
    keypad(win[0], TRUE);   /* We get F1, F2 etc..      */

    refresh();

    wprintw(WI, "Screen 1\n");
    wprintw(WC, "Screen 2\n");

    wattrset(WI, COLOR_PAIR(1));
    wrefresh(WI);

    getch();
    endwin();
    printf("\nThanks for playing\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我删除,则不起作用

refresh();
Run Code Online (Sandbox Code Playgroud)

线?

另外,拜托,我是这个 ncurses 的新手,所以如果你看到任何其他的误解,请善意地指出,特别是退出而不留下任何漏洞的程序。

Dr *_*eco 5

问题是一个不能getch()与其他窗口混合。getch()做一个refresh()。一个应该使用wgetch(WI)代替。

仍然让我困惑为什么refresh()在代码的开头使用 会使文本出现。但我认为要理解这种行为,我需要发布整个代码以查看这些功能如何混合所有屏幕。

现在wgetch()问题消失了。