屏幕分物理屏幕(我们所看到的)和逻辑屏幕(在内存中的), 我们调用函数时修改的是逻辑屏幕,它不会在当前物理屏幕上显示出来.所以现在屏幕上还是什么也没有, 需要调用refresh()把我们对逻辑屏幕的改动在物理屏幕(显示器)上显示出来. 然后用getch()让屏幕暂停一下.
最后调用endwin()结束curses, 恢复原来的屏幕.
好了, 我们完成了第一个例子的分析. 是不是挺简单的?
不过不尽如人意的是屏幕还是那个样子, 没有什么色彩. 要加色彩? 那也是挺容易的: 首先用start_color()函数开启颜色模式, 然后设置我们要的颜色就行了.
curses里的颜色是配对的, 要一个背景色对一个前景色. 使用之前用init_pair()初始化.
比如init_pair(1, COLOR_BLUE, COLOR_GREEN);就定义了一组颜色, COLOR_BLUE为前景色, COLOR_GREEN为背景色. 1是它们的标记号码(供其他函数调用时使用) 我们来看一个简单的例子:
/*-------------------------------------------------------------- A simple curses color demo program Coder: jellen Date: 3-26-2004 -------------------------------------------------------------*/ #include int main() { initscr(); /*初始化屏幕*/ if(start_color() == OK) /*开启颜色*/ { init_pair(1, COLOR_RED, COLOR_GREEN); /*建立一个颜色对*/ attron(COLOR_PAIR(1)); /*开启字符输出颜色*/ move(LINES/2, COLS/2); waddstr(stdscr, "Yet another Hello, world!"); attroff(COLOR_PAIR(1)); /*关闭颜色显示*/ refresh(); } else { waddstr(stdscr, "Can not init color"); refresh(); } endwin(); /*关闭curses状态*/ return 0; }
这个程序假如保存为color.c
那么你可以这样编译了: gcc -o color color.c -lcurses
用./color一运行个彩色的字? 呵呵, 虽然不好看, 但是说不定你自己以后可以用curses写出精美的程序。