在UNIX下如何用C语言保存和恢复屏幕(7)

来源:asp之家 时间:2010-05-20 18:24:00 


■ 结语

我们以连续两期来介绍 curses.h 函式库的使用方法, 相信同学对撰写这类的
程式应该不再陌生. 所谓『戏法人人会变, 巧妙各有不同』. 知道了基本函式
的呼叫方法, 能不能写出实用的程式, 就靠各位的巧思和创造力了.


有任何问题建议, 欢迎 E-mail 至 ljh@CCCA.NCTU.edu.tw , 谢谢 !


发信人: Cardinal.bbs@mic.ee.ntu.edu.tw (Cardinal), 信区: unix
标 题: Re: 请问谁会用 curses 显示 ANSI color 字
发信站: 台大电机 Maxwell 站

首先声明,这一封的内容应该属於 programming board,但是现在有不止一个
人问我这个问题,所以在这个版再把详细的方法说明一遍。如果有人看不懂而
仍然有兴趣的,请 mail 给我 (Cardinal.bbs@mic.ee.ntu.edu.tw) ,不要在
这边 reply,我会考虑在私下或在 programming board解决你的问题。

==> 在 Cardinal@Maxwell (Cardinal) 的文章中提到:
: 1.开一个 new window (newwin)
: 2.设定 window 的彩色属性 (wattrset)

==> 在设定彩色属性之前应该先设定颜色的 "pair" ,所谓的 "pair" 是指
foreground及background的颜色。curses的颜色有下面几种 (type为
short) :
COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE,
COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE

用init_pair(short pair, short f_color, short b_color)来设定 pair,
for example:
init_pair(100, COLOR_RED, COLOR_BLUE)
就设定了编号为 100, 蓝底红字的 color pair 了.

另外你要是嫌这几种颜色太单调了, 可以用 init_color 来设定色彩, 细节
这边就不谈了.

然後就用 wattrset(WINDOW* pwindow, short color_pair)设定你window的
颜色, for example:
wattrset(pwindow, 100) 就设定了一个蓝底红字的 window (不要忘记
这儿的 100 是刚刚用 init_pair设定的值)

: 3.印在 window 的字就自动变成那个颜色了 (mvwprintw, mvwaddstr, ...)

==> 这句... 该不会有问题吧.

: 4.想要印不同颜色的字,只要把那个字 "OR" (|) 不同的颜色即可 (记住,
: 这种有属性的字要用 int,不能用 char)

==> 其实型别不是用 int, 而是用 chtype (不过没有差别, 去查查 curses.h就
知道) , 譬如说, 你想要在刚刚设定为蓝底红字的 window印一个别的颜色的
'A' 字, 可以这麽做 :

init_pair(another_color_pair, COLOR_随便, COLOR_随便) -->先设定另一
个 color pair
char cascii = 'A';
chtype cascii_color = cascii | another_color_pair;

再把 cascii_color 印出来就是一个你想要颜色的 A 了.

--
~ Cardinal ~

From: Cardinal (Cardinal)
Title: 关於精华区...
Date: Fri Mar 10 20:36:27 1995


您好:

在 programming 版精华区 unix - curses libraries 中有一篇文章是我写的,
刚刚来这边找资料时翻到的, 真是受宠若惊. 不过原来的文章 (如何用 curses
显示彩色) 有一点忘了提到, 希望您能把下面的说明加进去:

1. init_color及init_pair 是 SystemVR3以後的标准, 不适用於 BSD 或
SunOS.
2. 在 SunOS 上要达成这样的目的, 我知道的有两种解法
a.有一款大同的中文工作站有支援 init_color & init_pair 的 library
这一型的 library 与 SunOS 为 object-code compatible.
b.ncurses 支援 init_pair & init_color

标签:unix,c语言,屏幕
0
投稿

猜你喜欢

  • Windows Server 2008关闭闲置状态的IDE通道

    2009-05-27 15:01:00
  • Apache访问出现501 Method Not Implemented错误解决

    2023-10-09 21:14:32
  • 详解Linux查看实时网卡流量的几种方式

    2023-08-22 02:07:13
  • 详解如何设置CentOS 7开机自动获取IP地址

    2021-05-30 19:25:22
  • Google推出中文AdSense for Mobile

    2007-09-19 13:25:00
  • Mozilla称不跟风谷歌 不开发Firefox操作系统

    2009-11-22 09:39:00
  • 详解在Linux中清空或删除大文件内容的5种方法

    2023-08-30 14:46:24
  • MAC VMWare Fusion网络设置方法

    2023-11-03 17:00:33
  • 手机网游停滞不前的根本原因系山寨手机导致

    2010-03-04 10:18:00
  • 巨人网络新网游《绿色征途》今日正式封测

    2009-10-23 07:52:00
  • typecho 文章路径设置

    2010-03-24 12:08:00
  • 更换WordPress模板前应该注意的24个问题

    2011-07-27 18:16:04
  • Linux防火墙iptables入门教程

    2022-05-07 17:57:25
  • 网站出现Service Unavailable的解决方法

    2010-05-03 14:35:00
  • 全面解析企业服务器I/O优化

    2009-12-18 10:42:00
  • 语音交互的使用及其特点

    2009-12-28 12:53:00
  • 满100美元Google AdSense 广告支票接收流程

    2007-07-30 12:40:00
  • 如何利用404错误页面引导流量、吸引点击

    2009-02-05 03:08:00
  • 堵塞Web漏洞(上)

    2007-10-19 13:38:00
  • 服务器托管需要注意的一些事项

    2008-05-07 19:18:00
  • asp之家 网站运营 m.aspxhome.com