为啥这个文本没有被 ncurses 着色?

Posted

技术标签:

【中文标题】为啥这个文本没有被 ncurses 着色?【英文标题】:Why is this text not being colored by ncurses?为什么这个文本没有被 ncurses 着色? 【发布时间】:2014-03-20 04:06:18 【问题描述】:

我想在 ncurses 中创建一个窗口,用一个框包围它,并在其中写一些彩色文本。

当我尝试在标准窗口中制作简单的彩色文本时,它可以完美运行,但是当我尝试将其放入新窗口时,文本显示为黑底白字(即默认值)

这是我尝试过的代码。为什么它不起作用?

#include <ncurses.h>

int main(int argc, char *argv[])

    initscreen();
    WINDOW * win = newwin(8,15,1,1);
    box(win,0,0);
    start_color();
    init_pair(1, COLOR_BLACK, COLOR_RED);
    attron(COLOR_PAIR(1));
    mvwprintw(win,1,1,"colored text");
    wrefresh(win);
    getch();
    return 0;

【问题讨论】:

附带说明,您通常还希望在代码末尾添加endwin() 同意endwin的需要,如果你使用wgetch(win),你可以去掉wrefresh 【参考方案1】:

我通过使用解决了这个问题

wattron(win, COLOR_PAIR(1));

而不是

attron(COLOR_PAIR(1));

wattron 影响给定窗口,而attron 假定您的意思是stdscr,而不是当前窗口。

【讨论】:

嘿,我已经在您的回答中添加了一行解释,说明为什么此更改可以解决问题。如果您不希望它在那里,请随意删除它。

以上是关于为啥这个文本没有被 ncurses 着色?的主要内容,如果未能解决你的问题,请参考以下文章

C语言之贪吃蛇(ncurses)

linux编译内核make menuconfig报错Unable to find the ncurses libraries解决办法

Opengl为啥这个着色器不起作用?

为啥我不能更改表格页脚的文本颜色?

为啥片段着色器没有附加?

基于文本图形(ncurses)的文本搜索工具 ncgrep