Ncurses - Panel

当你需要创建许多窗口时,你很快就会发现它们会变得难以管理。Panel library提供了很好的解决方案。

Panel 实际上是一个窗口,通过容器 - 栈 来管理,栈顶的 panel 是完全可见的,其它 panel 的位置决定了是否可见。

创建 panel 的基本流程如下:

1. 使用 newwin 函数创建一个窗口

2. 调用 new_panel 创建一个 panel

3. 调用 update_panels 将 panel 按顺序写入虚拟屏幕,调用 doupdate 让 panel 显示

4. show_panel、hide_panel、move_panel 用来显示、隐藏、移动 panel

5. 调用 del_panel 删除 panel

 

示例:

 1 #include <ncurses.h>
 2 #include <panel.h>
 3 
 4 #define MAX 3
 5 
 6 int main()
 7 {
 8     WINDOW* my_wins[MAX];
 9     PANEL *my_panels[MAX];
10     int lines = 10, cols = 40, y = 2, x = 4, i = 0;
11 
12     initscr();
13     cbreak();
14     noecho();
15 
16     int y_offset = 0;
17     int x_offset = 0;
18     for (; i < MAX; ++i) {
19         my_wins[i] = newwin(lines, cols, y + y_offset, x + x_offset);
20         box(my_wins[i], 0, 0);
21         y_offset++;
22         x_offset += 5;
23 
24         my_panels[i] = new_panel(my_wins[i]);
25     }
26 
27     update_panels();
28     doupdate();
29 
30     getch();
31 
32     for (; i < MAX; ++i) {
33         del_panel(my_panels[i]);
34         delwin(my_wins[i]);
35     }
36     endwin();
37 
38     return 0;
39 }

编译 : gcc hello.c -lncurses -lpanel

 

posted @ 2016-08-03 11:46  Kjing  阅读(501)  评论(0编辑  收藏  举报