fedora20,安装yum install ncurses-devel

编译时:-lncurses

头文件:#include<curses.h>

参考:man ncurses \linux程序设计

一,屏幕


1, 以initscr()开始,以endwin();结束

  WINDOW *initscr(void);  //初始化

  int endwin(void);     // 退出curses, 返回OK/ERR

2, 输出到屏幕

  int addch(const chtype ch);      //当前位置add ch

  int addchstr(chtype *const str);    //当前位置add str

  int printw(char *format,...);      //类printf,格式化输出

  int refresh(void);          //刷新物理屏,更改逻辑屏,必须刷新才能在物理屏上面显示

  int box(WINDOW *ptr, chtype v_ch, chtype h_ch);    //围绕ptr指定窗口画方框,垂直/水平方向字符v_ch/h_ch

  int insch(chtype ch);                //插入ch,右移

  int insertln(void);                  //插入空白行,下移

  int delch(void);                  //删除光标位置字符,左移

  int deleteln(void)                 //删除当前行,上移

  int beep(void);                  //发声

  int flash(void);                  //闪屏

3,从屏幕读取

  chtype inch(void);      //读取光标位置字符

  int instr(char *string);    //读取字符串到str,到NUL,不总是被支持

  int innstr(char *str, int n_of_str);  //读取n个字符到str,或NUL,不总是被支持

4,清除屏幕

  int erase(void);    //清屏,以空白字符填充

  int clear(void);    //清屏

  int clrtobot(void);    //清至屏幕结尾

  int clrtoeol(void);    //清至行尾

5,移动光标

  int move(int new_y, int new_x);    //y垂直方向,x水平方向

  int leaveok(WINDOW *ptr, bool lf);  //false,刷新后,硬件光标位置同逻辑光标;true,刷新后,硬件光标随机位置。一般默认选项符合用户需求。

6,字符属性

  int attron(chtype attr);    //启动指定属性(不影响其他)

  int attroff(chtype attr);    //关闭指定属性(不影响其他)

  attrset(chtype attr);    //设置字符属性

  int standout(void);    //“突出“模式,开

  int standend(void);    //“突出“模式,关

  A_NORMAL

  A_STANDOUT

  A_UNDERLINE

  A_REVERSE

  详细man curs_attr

二,键盘


1, 键盘模式

  int echo(void);    //输入字符回显,开启

  int noecho(void);  //                关闭

  int cbreak(void);    //cbreak模式,键盘输入立即处理,开启;默认cooked模式,回车后处理

  int nocbreak(void);  //          关闭

  int raw(void);      //  关闭特殊字符的处理功能,开启;

  int noraw(void);    //        关闭,同时关闭raw,cbreak

2, 键盘输入

  int getch(void);

  int getstr(char *str);

  int getnstr(char *str, int n_of_str);

  int scanw(char *format,...);

三,窗口


  

1,WINDOW结构

  WINDOW *newwin(int n_of_lines, int n_of_cols, int start_y, int start_x);  //新建窗口

  int delwin(WINDOW *ptr);    //销毁窗口

2,通用函数

  例子:

  int addch(const chtype ch);

  int waddch(WINDOW *ptr, const chtype ch);

  int mvaddch(int y, int x, const chtype ch);

  int mvwaddch(WINDOW *ptr, int y, int x, const chtype ch);

  前缀w用于窗口、mv用于光标移动,mvw用于在窗口中移动光标

  其他许多函数,都有类似通用函数,man ncurses查看

3,移动和更新窗口

  int mvwin(WINDOW *ptr ,int new_y, int new_x);  

  int wrefresh(WINDOW *ptr);         

  int wclear(WINDOW *ptr);            

  int werase(WINDOW *ptr);

  int touchwin(WINDOW *ptr);      //通知curses函数库,ptr指定窗口发生变化,下次wrefresh时,需重绘窗口。利用该函数,安排要显示的窗口

  int scrollok(WINDOW *ptr, bool sf);    //true,允许窗口卷屏。默认不允许

  int scroll(WINDOW *ptr);        //调用scrollok后,再调用scroll,把窗口内容上卷一行。

4,优化屏幕刷新

  int wnoutrefresh(WINDOW *ptr);

  int doupdate(void);

四,子窗口


  WINDOW *subwin(WINDOW *parent, int n_of_lines, int n_of_cols, int start_y, int start_x);

  int delwin(WINDOW *ptr);

  使用子窗口前,必须对其父窗口调用touchwin函数

五,keypad模式


  int keypad(WINDOW *ptr, bool keypad_on);

六,彩色显示


  bool has_colors(void);  //支持彩色显示,则返回true,否则false

  int start_color(void);    //初始化彩色显示功能,OK/ERR

  int init_pair(short pair_number, short foreground, short background);    //eg: init_pair(1,COLOR_RED,COLOR_GREEN),将红色前景绿色背景定义为一号颜色组合。

  int COLOR_PAIR(int pair_number);            //eg: COLOR_PAIR(1),作为属性来访问,同A_BOLD

  int pair_content(short pair_number, short *foreground, short *background);  //和init_pair相反,通过颜色组合号,来获得颜色。

  COLOR_BLACK  RED  GREEN  YELLOW  BLUE  MEGENTA品红  CYAN蓝绿色  WHITE

  int init_color(short color_number, short red, short green, short blue);    //通过red green blue组合颜色

  

七,pad


  所有执行写窗口操作的curses函数同样可用于pad

  WINDOW *newpad(int n_of_lines, int n_of_columns);    //创建逻辑屏幕,可以大于物理屏幕,两个参数代表逻辑屏幕大小,返回指向WINDOW结构的指针

  int prefresh(WINDOW *pad_ptr, int pad_row, int pad_column,  

                int screen_row_min, int screen_col_min, int screen_row_max,int screen_col_max);

       pad_ptr指针,newpad返回的指针;

       pad_row, pad_column,指定pad上位置

       screen_row_min, screen_col_min

         screen_row_max, screen_col_max,指定物理屏幕显示区域

  pnoutrefresh函数,作用与wnoutrefresh函数一样,为了更有效地刷新屏幕。

八,更多函数参考 man ncurses

linux curses函数库的更多相关文章

  1. Linux学习笔记13——使用curses函数库

    一 安装curses库 如果你的Linux系统中curses库,直接敲入命令sudo apt-get install libncurses5-dev,然后就会自动安装curses库,安装好之后敲入命令 ...

  2. linux内核函数库文件的寻找

    linux内核函数的so库文件怎么找呢? 首先还是要产生一个进程的coredump文件的 linux有一个lib-gdb.so库,这个进程的coredump文件中所有load段的最后一个load段中, ...

  3. Linux C函数库参考手册

    目录 第1章 字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ascii码字符) isblank(测试字符是否为空 ...

  4. 【转】Linux C函数库参考

    asctime(将时间和日期以字符串格式表示)clock(取得进程占用CPU的大约时间)ctime(将时间和日期以字符串格式表示)difftime(计算时间差距)ftime(取得目前的时间和日期)ge ...

  5. Linux C函数库大全

    (1)字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ASCII码字符) isblank(测试字符是否为空格字符) ...

  6. Linux Curses编程实现贪吃蛇

    curses库 简单而言,提供UNIX中多种终端 操作光标和显示字符 的接口.我们常见的vi就是使用curses实现的.现在一般都用ncurses库. Linux下curses函数库    Linux ...

  7. 使用 curses 函数库管理基于文本的屏幕

    curses 函数库提供了终端无关的方式来编写全屏幕的基于字符的程序.curses 还可以管理键盘,提供了一种简单易用的非阻塞字符输入模式. curses 函数库能够优化光标的移动并最小化需要对屏幕进 ...

  8. 查看Linux下*.a库文件中文件、函数、变量

    查看Linux下*.a库文件中文件.函数.变量等情况在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t xxx.a 2. ...

  9. Linux c codeblock的使用(三):使用函数库

    (一)概念 什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在windows系统上经常见到的东西.没错,就是那些后缀为DLL的文件. linux上实际也有自己的函数库文件,文件类型为. ...

随机推荐

  1. Codeforces Round #277 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/486 A题.Calculating Function 奇偶性判断,简单推导公式. #include<cstdio> ...

  2. zoj 3772 Calculate the Function

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5235 这道题需要构造矩阵:F(X)=F(X-1)+F(X-2)*A(X)转化为 ...

  3. bzoj1004 Cards

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红 ...

  4. QWidget: Must construct a QApplication before a QPaintDevice的问题

    卧槽,无意中编译自己基于Qt创建的Debug工程的时候运行时发生了标题中的错误,原来是把Qt Release的库也放到additional dependencies里面了,同时链接了Debug和Rel ...

  5. Android导航菜单横向左右滑动并和下方的控件实现联动

    这个是美团网个人订单的效果,找了很多地方都没找到,自己研究了两天终于弄出来了^_^,有什么问题希望大家指出来,谢谢. 实现原理是上方使用HorizontalScrollView这个可以水平横向拖动的控 ...

  6. UML--建模

    建模公式 这种精华的东西,一定是值得研读和实践的! myself:人,事,物,规则. 人,业务主角.业务工人.参与者.如果应用到教务系统中,就是管理员,主任,老师的关系. 事,业务用例,系统用例. 物 ...

  7. 需要考虑的9个SEO实践

    搜索引擎优化重要吗?我们知道,网站设计是把屏幕上平淡无奇变成令人愉快的美感,更直观地辨认信息.这也是人与人之间在沟通想法,这样的方式一直在演变. 穴居人拥有洞穴壁画,古埃及人有象形文字,现代人有网页设 ...

  8. 【剑指offer】面试题26:复杂链表的复制

    题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 思路: 复制自身到下一个结点: 设置新结点的random指针: 分离链表. 注意:判 ...

  9. UVa10815.Andy's First Dictionary

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. go中string和slice no-copy转换

    在go里面,string和slice的互换是需要进行内存拷贝的,虽然在底层,它们都只是用 pointer + len来表示的一段内存. 通常,我们不会在意string和slice的转换带来的内存拷贝性 ...