这是第一篇,由于平时比较忙,所以只能利用晚上的时间来译,今后还会有其他的相关译出来.
curses(S)
*********
____________________________________________________________________________
curses-CRT屏幕处理与优化包
语法
======
cc ... -lcurses
#include <curses.h>;
描述
===========
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.
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 开发 字符 一个 窗口 使用 curses 定义 终端 屏幕 回复 |
注册
个人空间
