2014-02-19 2 views
3

Я хотел создать окно в ncurses, окружить его коробкой и написать в нем цветной текст.Почему этот текст не окрашивается 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; 
} 
+0

В качестве побочного примечания вы обычно хотите иметь 'endwin()' в конце вашего кода. –

+0

соглашаясь с необходимостью 'endwin', вы можете устранить' wrefresh', если вы использовали 'wgetch (win)' –

ответ

10

Я soloved проблему с помощью

wattron(win, COLOR_PAIR(1)); 

вместо

attron(COLOR_PAIR(1)); 

wattron влияет на данное окно, в то время как attron предполагает, что вы имели в виду stdscr, а не в текущем окне.

+0

Эй, я добавил строку объяснения к вашему ответу о том, почему это изменение устраняет проблему. Не стесняйтесь удалять его, если вы этого не хотите. –

Смежные вопросы