为啥这个文本没有被 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 着色?的主要内容,如果未能解决你的问题,请参考以下文章
linux编译内核make menuconfig报错Unable to find the ncurses libraries解决办法