面板库(Panel Library)能方便得管理面板:
1. 使用newwin()函数创建一个窗口,它将添加到面板里。
2. 创建面板(利用所创建的窗口)并将面板依据用户指定的可见顺序压进栈。调用
new_panel()函数即可创建该面板。
3. 调用update_panels()函数就可将面板按正确的顺序写入虚拟屏幕,调用doupdate()函
数就能让面板显示出来。
4. show_panel(), hide_panel(), move_panel()等函数分别用来对面板进行显示、隐藏、移
动等操作时,可以使用panel_hidden()和panel_window()这两个辅助函数。你也可以
使用用户指针来存储面板的数据,set_panel_userptr() 和panel_userptr()函数分别用
来设置和取得一个面板的用户指针。
5. 当一个面板使用完毕后,用del_panel()函数就可删除指定的面板。
下面是一个例子
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;
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();
getch();
endwin();
}
麦好的AI乐园博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
dp@dp:~/cursestest % gcc -lncursesw -lpanel x.c -o mytest
dp@dp:~/cursestest % ./mytest
屏幕上显示了三个窗口,每个窗口都是一个面板,每个面板关联一个窗口。如下图所示: