我正在使用ncurses在主窗口中准备一个简单的菜单,有5个选项,并在箭头键的帮助下选择它们。目前我准备了一个程序,只在屏幕上显示一个菜单,只有5个选项,但是一些输出如何作为一个空白屏幕。请帮我找出我的代码中的错误。
#include<ncurses.h>
#include<stdlib.h>
//#define ENTER 10
//#define ESCAPE 27
void init_curses()
{initscr();
start_color();
init_pair(1,COLOR_WHITE,COLOR_BLUE);
init_pair(2,COLOR_BLUE,COLOR_WHITE);
init_pair(3,COLOR_RED,COLOR_WHITE);
curs_set(0);
noecho();
keypad(stdscr,TRUE);
}
void draw_mainmenu(WINDOW *mainmenu)
{ wbkgd(mainmenu,COLOR_PAIR(2));
waddstr(mainmenu, "HELLO THIVNENT");
move(1,0);
waddstr(mainmenu, "HELLO THIVNENT 1");
move( 2,0);
waddstr(mainmenu, "HELLO THIVNENT 2");
move( 3,0);
waddstr(mainmenu, "HELLO THIVNENT 3");
move( 4,0);
waddstr(mainmenu, "HELLO THIVNENT 4");
move( 5,0);
waddstr(mainmenu, "HELLO THIVNENT 5");
wattroff(mainmenu,COLOR_PAIR(3));
}
int main()
{
int key;
WINDOW *mainmenu;
init_curses();
bkgd(COLOR_PAIR(1));
mainmenu=subwin(stdscr,1,80,0,0);
draw_mainmenu(mainmenu);
sleep(3);
refresh();
delwin(mainmenu);
endwin();
return 0;
}
答案 0 :(得分:0)
在refresh()
sleep()
refresh();
sleep(3);
答案 1 :(得分:0)
您的代码完全正确。问题是sleep(3)
函数放在refresh()
之前导致3秒后刷新,并且您立即尝试删除该窗口,当然您将无法看到它。有两种方法可以解决问题。
sleep(3)
并在getch()
修复问题后插入refresh()
。现在窗口将保持不变,直到您按下一个键而不是3秒钟。sleep(3)
放在refresh()