2015-12-25 96 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