然後看看隱藏和顯示面板
dp@dp:~/cursestest % cat x.c
#include
int main()
{
WINDOW *my_wins[3];
PANEL *my_panels[3];
int lines = 10, cols = 40, y = 2, x = 4, i;
int ch;
initscr();
cbreak();
noecho();
/* 為每個面板創建窗口*/
my_wins[0] = newwin(lines, cols, y, x);
my_wins[1] = newwin(lines, cols, y + 1, x + 5);
my_wins[2] = newwin(lines, cols, y + 2, x + 10);
/* 為窗口添加創建邊框以便你能看到面板的效果*/
for(i = 0; i < 3; +++i)
box(my_wins[i], 0, 0);
/* 按自底向上的順序,為每一個面板關聯一個窗口*/
my_panels[0] = new_panel(my_wins[0]);
/* 把面板0 壓進棧, 疊放順序: stdscr0
*/
my_panels[1] = new_panel(my_wins[1]);
/* 把面板1 壓進棧, 疊放順序: stdscr01
*/
my_panels[2] = new_panel(my_wins[2]);
/* 把面板2 壓進棧, 疊放順序: stdscr012*/
/* 更新棧的順序。把面板2 置於棧頂*/
update_panels();
/* 在屏幕上顯示*/
doupdate();
//q退出,按1-3鍵顯示和隱藏對應的面板
int isshow[3]={1,1,1};
while((ch = getch()) !='q')
{ switch(ch)
{
case '1':
if ((++isshow[0])%2) show_panel(my_panels[0]);
else hide_panel (my_panels[0]);
break;
case '2':
if ((++isshow[1])%2) show_panel(my_panels[1]);
else hide_panel (my_panels[1]);
break;
case '3':
if ((++isshow[2])%2) show_panel(my_panels[2]);
else hide_panel (my_panels[2]);
break;
}
update_panels();
doupdate();
}
getch();
endwin();
}
執行後
dp@dp:~/cursestest % gcc -lncursesw -lpanel x.c -o mytest
dp@dp:~/cursestest % ./mytest
比如把2號面板隱藏,效果如下