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

时间: 2024-10-09 14:46:23

Ncurses - Panel的相关文章

编译Openwrt的log

Openwrt配置: Target System (Ralink RT288x/RT3xxx) ---> Subtarget (MT7688 based boards) ---> Target Profile (LinkIt7688) ---> ---------------------------------------------------------------------------------------------------------------------------

EasyUi -- 如何根据动态加载panel和Datagrid

在做项目的过程中,前台的面板和表格一般都不是固定的,它是根据后台传来的数据进行变化的.举个例子: 实现: 看一下我们的效果图: 这个上面的最左边的Panel要根据系别动态加载,有多少个系别就要加载都少个Panel,Panel里面的是一个table,这个里面也是动态加载出来. 右边是一个datagrid,datagrid里面的工作效率.业务能力等等也都是数据库动态加载出来的,包括后面的ABCD也是动态的. 这样就算数据库中的数据怎么变,这里都会动态地加载出来.那么怎么实现这些功能呢? 一.动态加载

c#中如何在一个panel中放入窗体

? 1 2 3 4 5 6 7 Form2 f2 = new Form2();       //实例化窗体FORM2              f2.TopLevel = false;    //设置为非顶级窗体              f2.FormBorderStyle = FormBorderStyle.None;            //设置窗体为非边框样式              f2.Dock = System.Windows.Forms.DockStyle.Fill;   /

网站前端_EasyUI.基础入门.0002.使用EasyUI Panel组件的最佳姿势?

1. 基础面板 <div id="p" class="easyui-panel" style="padding: 10px;" data-options="width:700,height:250,title:'基础面板'">     <p>jQuery EasyUI framework helps you build your web pages easily.</p>     <u

EasyUI学习笔记之panel

<easyUI panel 属性:> <!--引入easyUI panel 组件 设置宽,高,定义标题(默认在左上角),设置图标iconCls:'icon-ok',引入工具tools:'#tt'--> <id="tt",这个标签内的内容被当做tool属性的值,做了添加和编辑的JS操作事件> <div class="easyui-panel" style="width:300px;height:200px"

Bootstrap之面板panel

面板(Panels)是Bootstrap框架新增的一个组件,其主要作用就是用来处理一些其他组件无法完成的功能. <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>面板</title> <link rel="styleshe

UWP开发入门(五)——自定义Panel

各位好,终于讲到自定义Panel了.当系统自带的几个Panel比如Gird,StackPanel,RelativePanel不能满足我们的特定要求时(其实不常见啦),自定义Panel就显得非常必要,而且因为是针对性的处理,效果也会非常好.更何况自定义Panel其实并不复杂,今天俺们就来学习一下. 记得上一篇自定义CommandBar在增加占位控件AppBarEmpty时,采用的是通过Page的SizeChanged事件中计算页面Width,减去CommandBar中其他控件Width后再赋值Wi

EasyUI - Panel 面板控件

效果: html代码: <div id="p" style="padding: 10px;"> <p>panel content.</p> <p>panel content.</p> </div> JS代码: 其中有些属性,之间的使用有冲突. tools属性,与href属性,与extractor属性,与loadingMessage属性,最为有用. $(function () { $('#p').

面板Panel

Basic Panel The panel is a container for other components or elements. Open Close Basic Panel jQuery EasyUI framework helps you build your web pages easily. easyui is a collection of user-interface plugin based on jQuery. easyui provides essential fu