为什么这段代码在这里:
#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 的新手,所以如果你看到任何其他的误解,请善意地指出,特别是退出而不留下任何漏洞的程序。
问题是一个不能getch()与其他窗口混合。getch()做一个refresh()。一个应该使用wgetch(WI)代替。
仍然让我困惑为什么refresh()在代码的开头使用 会使文本出现。但我认为要理解这种行为,我需要发布整个代码以查看这些功能如何混合所有屏幕。
现在wgetch()问题消失了。