精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● Linux>>Linux之开发篇>>UNIX 萤幕导向程式的发展利器 - curses

主题:UNIX 萤幕导向程式的发展利器 - curses
发信人: [email protected].()
整理人: Wing(1997-10-26 20:31:12), 站内信件
首先声明,这一封的内容应该属於 programming board,但是现在有不止一个
人问我这个问题,所以在这个版再把详细的方法说明一遍。如果有人看不懂而
仍然有兴趣的,请 mail 给我 ([email protected]) ,不要在
这边 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




[关闭][返回]