2015-12-25 39 views
0

我发现一个问题,下面的代码:为什么这个窗口不可见?

int ch = 0; 

WINDOW *new_window(int x, int y, int w, int h) 
{ 
    WINDOW *win; 
    win = newwin(h, w, y, x); 
    box(win, '|', '-'); 
    return win; 
} 
int remove_window(WINDOW *win) 
{ 
    delwin(win); 
    refresh(); 
} 
int showMsgbox(char *title, char *message, int x, int y, int w, int h) 
{ 
    WINDOW *msgbox; 
    msgbox = new_window(x, y, w, h); 
    mvwprintw(msgbox, 0, 2, title); 
    mvwprintw(msgbox, 2, 1, message); 
    mvwprintw(msgbox, h, 2, "Press ENTER..."); 
    wrefresh(msgbox); 

    while((ch = getch()) != 10) //ENTER 
    { 
     wrefresh(msgbox); 
    } 
    remove_window(msgbox); 
    return 0; 
} 

int main() 
{ 
    initscr(); 
    cbreak(); 
    showMsgbox("Hi!", "Hi everybody!", 2, 2, 20, 5); 
    endwin(); 
    return 0; 
} 

的问题是:当我打电话功能showMsgbox窗口是不可见的 (这里没有编译错误/警告/注意事项)。 对不起,如果我没有发表评论。 在此先感谢!

回答

1

这是不可见的,因为对getch()的调用会刷新顶层stdscr,这会隐藏msgbox。如果您使用wgetch(msgbox),那可以按照您的预期工作。

+0

非常感谢! – Clicco89