控制视频属性

程序可控制许多视频属性。

视频属性、位掩码和缺省颜色

curses 使您能够控制以下属性:
A_ALTCHARSET
备用字符集。
A_BLINK
闪烁。
A_BOLD
超高亮度或粗体。
A_DIM
半亮。
A_NORMAL
一般属性。
A_REVERSE
反转视频。
A_STANDOUT
终端最佳突出显示方式
A_UNDERLINE
下划线。
COLOR_PAIR (Number)
显示 Number 代表的颜色对。 必须已经使用 init_pair 子例程初始化了该颜色对。

这些属性在 curses.h 文件中定义。 可将属性传递给 wattronwattroffwattrset 子例程,或可使用传递给 waddch 子例程的字符对它们执行 OR 操作。 C 逻辑 OR 运算符是|(管道符号)。 还提供了以下位掩码:

A_ATTRIBUTES
抽取属性
A_CHARTEXT
抽取字符
A_COLOR
抽取颜色对字段信息
A_NORMAL
关闭所有视频属性

提供了以下宏处理颜色对:COLOR_PAIR( Number)PAIR_NUMBER( Attribute)COLOR_PAIR( Number) 宏和 A_COLOR 掩码为 PAIR_NUMBER( Attribute) 宏所用,以抽取在 Attribute 参数指定的属性中找到的颜色对号。

如果程序使用颜色,那么 curses.h 文件定义许多标识以下缺省颜色的宏:

颜色 整数值
颜色_黑色 0
颜色 (COLOR_BLUE) 1
颜色_绿色 2
颜色_青色 3
颜色 4
颜色_MAGENTA 5
COLOR_黄色 6
颜色_白色 7

curses 假定所有终端的缺省背景色均为 0 (COLOR_BLACK)。

设置视频属性

当前窗口属性将应用于使用 addch 子例程写入窗口的所有字符。 这些属性保留为字符属性。 字符在终端操作期间保留这些属性。

attroff 或 wattroff
关闭属性
attron 或 wattron
打开属性
attrset 或 wattrset
设置窗口的当前属性
standout , wstandout , standend 或 wstandend
将窗口置于终端最佳突出显示方式,以及使窗口脱离终端最佳突出显示方式
vidput 或 vidattr
输出将终端置于视频属性方式的字符串

attrset 子例程设置缺省屏幕的当前属性。 wattrset 子例程设置用户定义的窗口的当前属性。

使用 attronattroff 子例程来打开和关闭 stdscr 中的指定属性,而不影响任何其他属性。 wattronwattroff 子例程在用户定义的窗口中执行相同的操作。

standout 子例程与对具有 A_STANDOUT 属性的 attron 子例程的调用相同。 它将 stdscr 置于终端最佳突出显示方式。 wstandout 子例程与对 wattron ( Window, A_STANDOUT) 子例程的调用相同。 它将用户定义的窗口置于终端最佳突出显示方式。 standend 子例程与对 attrset (0) 子例程的调用相同。 它关闭了 stdscr 的所有属性。 wstandend 子例程与对 wattrset ( Window, 0) 子例程的调用相同。 它关闭了指定窗口的所有属性。

vidput 子例程输出将终端置于指定属性方式的字符串。 字符是通过 putc 子例程输出的。 维达特尔 子例程与 Vidput 子例程相同,但字符是通过 普查尔 子例程输出的。

处理颜色对

COLOR_PAIR(Number) 宏在 curses.h 文件中定义,因此可以像控制任何其他属性那样控制颜色属性。 在使用它之前,必须使用 init_pair 子例程初始化颜色对。 init_pair 子例程具有以下参数:PairForegroundBackgroundPair 参数必须在 1 和 COLOR_PAIRS -1 之间。 ForegroundBackground 参数必须在 0 和 COLORS -1 之间。 例如,要将颜色对 1 初始化为前景为黑色而背景为蓝色,请使用以下子例程:
init_pair(1, COLOR_BLACK, COLOR_CYAN);
然后可按如下所示设置窗口属性:
wattrset(win, COLOR_PAIR(1));

如果您随后编写字符串Let's add Color对于终端,该字符串在青色背景上显示为黑色字符。

抽取属性

可使用调用 winch 子例程的结果抽取属性信息,其中信息包括颜色对号。 The following example uses the value returned by a call to the 绞盘 subroutine with the C logical AND operator (&) 以及 A_ATTRIBUTES 位掩码,用于抽取分配给窗口中当前位置的属性。 此操作的结果与 PAIR_NUMBER 宏配合使用,以抽取颜色对号和数字1打印在屏幕上。
win = newwin(10, 10, 0, 0);
init_pair(1, COLOR_RED, COLOR_YELLOW);
wattrset(win, COLOR_PAIR(1));
waddstr(win, "apple");

number = PAIR_NUMBER((mvwinch(win, 0, 0) & A_ATTRIBUTES));
wprintw(win, "%d\n", number);
wrefresh(win);

指示灯和耳语

curses 库提供以下警报子例程提示用户:

蜂鸣声
在终端上发出可听到的警报
闪烁
在终端上显示可视警报

设置 curses 选项

所有 curses 选项最初都已关闭,因此在调用 endwin 子例程之前不需要将其关闭。 以下子例程允许对 curses 设置不同选项:
curs_set
将光标可视性设为不可视、正常或可视性很好。
idlok
指定 curses 是否可以使用如此配置的终端的硬件插入和删除行功能。
内冲
指定中断键(中断、退出或暂挂)是否在 tty 驱动程序中对齐所有输出。 此选项的缺省值是从 tty 驱动程序处继承的。
小键盘
指定 curses 是否从终端小键盘检索信息。 如果启用此选项,那么用户可以按功能键 (例如箭头键) ,并且 wgetch 子例程将返回表示该功能键的单个值。 如果禁用,curses 将不会特殊对待功能键,并且程序必须解释换码序列。 要获取这些功能键的列表,请参阅 wgetch 子例程。
输入提示
指示 curses 在备用文件描述符中检查前面的类型。

有关其他 curses 选项的描述,请参阅 wgetch 子例程和 Understanding Terminals with Curses