zoukankan      html  css  js  c++  java
  • linux curses函数库

    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

  • 相关阅读:
    orm操作
    模板语言
    路由
    newlib中printf库函数的实现
    调试问题记录
    GCC部分编译选项解析
    Lauterbach TRACE32使用技巧记录
    ARM32 页表映射过程
    TTBR0与TTBR1
    Camera Sensor基础知识
  • 原文地址:https://www.cnblogs.com/jokoz/p/4120625.html
Copyright © 2011-2022 走看看