Linux程序设计(curses使用示例)


看官们,咱们今天要说的内容还是curses库,我们今天主要说它的用法。闲话休说,言归正转。


下面是我利用curses函数库写的一个显示棋盘的小程序,请大家参考:

     1    #include<unistd.h>
     2    #include<stdlib.h>
     3    #include<ncurses.h>
     4    
     5    int main()
     6    {
     7        int i;
     8    
     9        initscr();              //初始化屏幕
    10    
    11        if(!has_colors())       //确认终端是否支持彩色显示
    12        {
    13            endwin();
    14            printf("can't support color \n");
    15            return 0;
    16        }
    17    

    18        if(start_color() != OK)  //确认初始化彩色显示是否成功
    19        {
    20            endwin();
    21            printf("can't initialize color \n");
    22            return 0;
    23        }
    24        

    25        init_pair(3,COLOR_RED, COLOR_WHITE);  //设置颜色对前景红色,背景白色
    26        attrset(COLOR_PAIR(3));               //使用刚才设置的颜色
    27    
    28        for(i=0; i< 18; i+=2)                 //画横线和竖线
    29        {
    30                mvvline(9,2+i,'|',9);
    31                mvvline(9,2+i+1,'_',9);
    32        }
    33    

    34        refresh();                           //刷新屏幕,以便显示内容
    35        getch();                             //等待用户输入
    36        sleep(2);                            //暂停两秒
    37    
    38        endwin();                            //释放屏幕相关的资源
    39    
    40        return 0;
    41    }
    42    


把上面的代码保存成C语言源文件,然后使用gcc编译,编译时需要使用l选项(lncurses).编译完后的运

行结果如下图所示:


我本来是想使用curses库画一些图形,使用后发现,它的图形功能不强,而且使用不方便,因此,不准备

在它上面花费过多的时间和精力。鉴于这个原因,我没有详细介绍其中的原理和使用方法,大家可以参考

代码中的注释,了解简单的用法。


各位看官们,今天的内容就到此为止,欲知后事如何,且听下回分解。


这份文档中用到的所有程序已经被打包并压缩成一个tar.gz文件。以下是这个压缩包解压缩后的目录结构: ncurses | |----> JustForFun -- just for fun 部分的程序 |----> basics -- 一些基础部分的程序 |----> demo -- make 之后的程序 | | | |----> exe -- 一些已编译的可执行示例程序 |----> forms -- 和form 库相关的程序 |----> menus -- 和menus 库相关的程序 |----> panels -- 和 panels 库相关的程序 |----> Makefile -- 一级目录的下的 Makefile |----> README -- 一级目录下的 README 文件包含程序说明。 |----> COPYING -- 程序版权信息文档。 这些目录下包扩以下的文件: JustForFun | |----> hanoi.c -- 汉诺塔示例 |----> life.c -- 生命游戏 |----> magic.c -- 数字幻方 |----> queens.c -- 皇后问题 |----> shuffle.c -- 智力拼图 |----> tt.c -- 一个非常简单的打字练习程序 basics | |----> acs_vars.c -- 可选字符(ACS)变量示例 |----> hello_world.c -- 简单的“Hello, World!”程序 |----> init_func_example.c -- 初始化函数示例 |----> key_code.c -- 显示键盘字符代码的程序 |----> mouse_menu.c -- 一个可以使用鼠标访问的菜单 |----> other_border.c -- 展示与box()函数不同的显示边框的其它函数 |----> printw_example.c -- 一个非常简单的使用printw()函数的例子 |----> scanw_example.c -- 一个非常简单的使用getstr()函数的例子 |----> simple_attr.c -- 一个在屏幕上打印C源程序注释的例子 |----> simple_color.c -- 一个简单的演示颜色的例子 |----> simple_key.c -- 一个可以用方向键访问的菜单的例子 |----> temp_leave.c -- 一个演示临时离开CURSES模式的例子 |----> win_border.c -- 展示窗口和边框的例子 |----> with_chgat.c -- chgat()函数使用的例子 forms | |----> form_attrib.c -- 展示field属性的用法 |----> form_options.c -- 展示field选项的用法 |----> form_simple.c -- 一个简单的表单例子 |----> form_win.c -- 一个简单的窗口和表单联合使用的例子 menus | |----> menu_attrib.c -- 展示菜单属性的用法 |----> menu_item_data.c -- 展示 item_name() 等等函数的用法 |----> menu_multi_column.c -- 建立多列菜单 |----> menu_scroll.c -- 展示菜单滚动的示例 |----> menu_simple.c -- 一个用方向键控制菜单的例子 |----> menu_toggle.c -- 建立多值菜单和解释 REQ_TOGGLE_ITEM |----> menu_userptr.c -- 用户指针的用法 |----> menu_win.c -- 菜单和窗口结合的演示例子 panels | |----> panel_browse.c -- 通过 tab 浏览展示用户指针的用法 |----> panel_hide.c -- 隐藏和取消隐藏面板的例子 |----> panel_resize.c -- 移动和改变面板大小的例子 |----> panel_simple.c -- 一个简单的面板使用例子 perl |---->01-10.pl --前10个例子的perl语言版 Makefile包含在一级主目录里。它将会把所有的程序编译成可执行的文件。并把这些文件存在demo/exec目录下面。你也可以选择将其编译到别的目录下。每个目录下都有一个README文件详细描述了每个目录下的C源程序的内容。 对于每一个示例,我都给出了这些程序调用NCURSES目录下相关文件的路径名。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值