收藏于 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, '|', '-');