使用ncurses刷新重叠的窗口

时间:2013-04-17 21:13:01

标签: c++ ncurses

我创建了一个与其他窗口重叠的弹出窗口,我对其进行了修改,然后将其删除。但是当我这样做时,背景窗口会保留空格。

popup(){
    WINDOW* backgroundWin = subwin(stdscr,0,0,100,100);
    //fill it with something
    WINDOW* popupWin = subwin(stdscr,50,50,10,10);
    werase(popupWin);       //so it doesn't look 'transparent'
    box(popupWin,0,0);
    wrefresh(popupWin);

    getch();

    werase(popupWin);
    delwin(popupWin);

    refresh(); //when I do this refresh the contents of the popup window stay, in this case blank spaces because I used werase

 }

编辑: 根据这个使用touchwin(stdscr)刷新之前应该工作,但事实并非如此 http://linux.die.net/man/3/touchwin

1 个答案:

答案 0 :(得分:1)

我看到了我的问题,当我需要创建一个新窗口时,我正在创建一个子窗口。 当我测试主窗口被更改的位置时,使用is_wintouched,它只在删除子窗口后返回true,我不知道为什么。

  

窗口位于窗口orig的中间,因此对一个窗口所做的更改将影响两个窗口。   http://linux.die.net/man/3/subwin