我想在屏幕(我的窗口)中一行一行地打印文本,当我选择一个选项时,我想使用ncurses.h使该窗口消失。
int height = 6;
int width = 24;
WINDOW* menuwin = newwin(height, width, (LINES - height)/2, (COLS - width)/2);
box(menuwin, 0, 0);
refresh();
wrefresh(menuwin);
keypad(menuwin, TRUE);
char* choices[3] = {"something", "something", "something"};
int choice;
int highlight = 0;
while(TRUE)
{
for(int i = 0; i < 3; ++i)
{
if(i == highlight)
{
wattron(menuwin, A_REVERSE);
}
mvwprintw(menuwin, i + 1, 1, choices[i]);
wattroff(menuwin, A_REVERSE);
}
choice = wgetch(menuwin);
switch(choice)
{
case KEY_UP:
highlight--;
if(highlight == -1) highlight = 2;
break;
case KEY_DOWN:
highlight++;
if(highlight == 3) highlight = 0;
break;
default:
break;
}
if(choice == 10)
{
wrefresh(menuwin);
delwin(menuwin);
refresh();
getch();
}
}
好吧,这样做是什么,我在屏幕中间创建了一个菜单,但框内的文本在左上方,我希望它在该窗口的中间,当我选择说选项1我希望该窗口是“隐藏的”或某种东西,以便我可以在任何时候看到它,只有Ncurses和C可见。
更新:
我在框的中间通过将mvwprintw(menuwin, i + 1, 1, choices[i]);
更改为mvwprintw(menuwin, i + 1, 6, choices[i]);
来进行选择,它可以工作,但是有更通用的方法吗?
答案 0 :(得分:0)
如果您对stdscr
进行更改并刷新,它将遮盖其他窗口(直到您修改/刷新这些窗口)。