curses开发包的man_page

【curses开发包的man_page】
这是第一篇,由于平时比较忙,所以只能利用晚上的时间来译,今后还会有其他的相关译出来.
curses(S)
*********
____________________________________________________________________________
curses-CRT屏幕处理与优化包
语法
======
cc ... -lcurses
#include
描述
===========
curses库例程为用户提供了一个独立于终端的、对更新字符屏幕进行合理优化的方法,使用这些例程的程序必须使用-lcurses选项进行编译 。
curses包允许:
o 全屏幕,窗口和光条操纵
o 输出到窗口和光条
o读取终端输入
o控制终端与光标的输入和输出选项
o环境查询例程
o色彩操纵
o使用软标签键
o终端信息的存取
o使用低级curses例程
在使用任何一个处理窗口与屏幕的例程之前,必须调用initscr或newterm对例程进行初始化 。
在退出前必须调用endwin例程 。大多数交互的,面向屏幕的程序需要无回显的单字符输入,要达到此目的,要按以下顺序进行:
cbreak();
noecho();
也有多数程序会按这个顺序:
nonl();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
在你运行一个curses()程序前,如果终端定义了tab键宽度,则必须对其进行设置并在初始化串中输出,你可以在shell环境变量TERM输出后用命令tput_init来设置 。(参见terminfo(F)和terminfo(M)以获取详细信息) 。
curses()库允许你操纵叫做窗口的数据结构,窗口可以看作是二维的字符数组 。此例程库提供了一个默认的窗口stdscr,就是整个终端的大小 。你可以用newwin()来创建其他的窗口 。
窗口由声明为WINDOW *的变量来引用 。这些数据结构的操纵由在cursesr 的帮助文件中描述的例程来进行(这些例程均以"curs_"开头) 。其中最基本的例程是move()和addch() 。库中包含了这些例程的更为通用的版本,可以让你指定一个窗口 。
在例程完成对一个窗口的维护后,调用refresh()告诉curses()使用户的屏幕看上去更象stdscr.窗口中的字符实际上是chtype类型(包括字符和属性数据)以便将有关字符的其他信息与每个字符一同存贮.
叫做光条(pad)的窗口同样可以维护.他们也是一些窗口,但可能不与屏幕中的一个可视的区域相关联.参考cur_pad(S)可得到更多的信息.
除了在屏幕上显示字符以外,你也可使用视频属性和色彩,输出加下划线的字符,反显的图象,或在支持彩色模式的终端上显示彩色字符.你还可输出带有删除线的字符.(line-drawing是批带有删除线还是指用线条画出的字符?)对于输入,curses()也可将方向键和功能键的转义序列译为单独的键值.视频属性,划线字符和输入键名,在curses.h中定义,如A_REVERSE, ACS_HLINE, 和 KEY_LEFT.
curses()中也有操纵彩色数字字符终端上色彩显示的例程.使用时,要先调用start_color(),通常是在initscr()后马上调用.彩色通常成对使用,称为色彩对.一个色彩对有一个前景色(字符颜色)和一个背景色(字符在其上显示的区域的颜色).
你在使用时要用init_pair()例程对一个色彩对进行初始化.初始化后,就能象使用其他视频属性一样使用在curses.h中定义的一个宏COLOR_PAIR(n).如果终端可以重新定义彩色,那么以下的例程很有用处:
o has_color根据终端是否支持彩色返回TRUE或FALSE.
o can_change_color()根据用户是否可以改变颜色返回TRUE或FALSE.
o color_content( )向用户报告在一个初始化的颜色中红绿蓝的数量.
o pair_content( )向用户报告当前的特定彩色对是如何定义的.
o init_color( ) 改变一个彩色的定义.
如果设置了环境变量LINES和COLUMNS ,或者如果程序在一个窗口环境中运行,则环境中的行列信息会覆盖由terminfo()读取的信息.在窗口环境中运行的程序需要这么做是因为屏幕是可以改变的.

推荐阅读