为什么这段代码在这里:
#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;
}
如果我删除,不起作用
refresh();
线?
另外,拜托,我是这个ncurses的新手,所以如果你看到任何其他误解,请善意指出,特别是退出程序而不留下松散的目的。
答案 0 :(得分:3)
问题是人们不能将getch()
与其他窗口混合在一起。 getch()
执行refresh()
。一个人应该使用wgetch(WI)
代替。
仍然让我感到困惑的是为什么在代码的开头使用refresh()
使文本出现。但我认为要理解这种行为,我需要发布整个代码,看看这些功能如何混合所有屏幕。
现在wgetch()
问题已经消失。