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

收藏于 2011-07-06

迁移自个人百度空间

1、initscr() 和 endwin()

     curses程序都以一个 initscr() 开始,以 endwin() 结束。

     当程序须暂时退出curses模式时,例如需要调用 system() 或者其他系统调用时,就需要先推出curses模式,处理好后再用

     wrefresh() 和 doupdate() 来重返curses模式。

2、cbreak() 和 nocbreak()

     cbreak() 开启cbreak模式,此时,除了delete和ctrl键等被视为特殊控制字符外,其它输入字符都将被一一读取。

     nocbreak() 关闭cbreak模式,此时,从键盘输入的字符将被放到buffer中,直到buffer满或者遇到回车符/换行符。

     在较旧版的curses库中须用 crmode() 和 nocrmode() 来取代 cbreak() 和 nocbreak()。

3、clear() 和 clrtoeol()

     clear() 清屏

     clrtoeol 清除当前行,通常和 move(y,x)搭配使用。

     如果你想在屏幕上第一行第一列显示文本"Hello",可以用下面语句

     move(1,1);

     clrtoeol();

     printw("%s\n","Hello");

4、改变屏幕显示字符的属性

     attron(ATTRIBUTE);  //开启某属性

     attroff(ATTRIBUTE);  //关闭某属性

     attrset(ATTRIBUTE);  //设置某属性 

     在 curses.h 里定义了一些属性

     A_UNDERLINE  //加底线
     A_REVERSE  //反白
     A_BLINK  //闪烁
     A_BOLD  //粗体
     A_NORMAL  //标准模式 (只能配合 attrset() 使用)

     开启另一种属性时,要先调用 attroff 将原来的属性关闭,或者调用 attrset(A_NORMAL) 将原来的所有特殊属性关闭,否则,特殊字符属性会重叠在一起。

     属性重叠还可以用下面方法设置

     wattron(WINDOW *win_ptr, A_BLOD | A_BLINK);  //wattron表示在 win_ptr 指向的窗体里设置重叠属性

5、在屏幕上获取字符串

     int getstr(char *str);
     int getnstr(char *str, int n);
     int wgetstr(WINDOW *win, char *str);
     int wgetnstr(WINDOW *win, char *str, int n);
     int mvgetstr(int y, int x, char *str);
     int mvwgetstr(WINDOW *win, int y, int x, char *str);
     int mvgetnstr(int y, int x, char *str, int n);
     int mvwgetnstr(WINDOW *, int y, int x, char *str, int n);

6、其它常用函数

     beep();  //发出一声“哗”响

     box(WINDOW *win_ptr, char ch1, char ch2);  //在win_ptr所指向的窗体上,垂直方向上以ch1字符,水平方向上用ch2字符来画方框。

     例子:box(stdsrc, '|', '-');

猜你喜欢

转载自blog.csdn.net/linseeker85/article/details/81200273