Как мне переопределить пару цветов в ncurses?

Название должно сказать все это, так что я создал пару цветов следующим образом:

init_pair(1, COLOR_RED, COLOR_BLACK);

И тогда я хотел переопределить это, как это:

init_pair(1, COLOR_GREEN, COLOR_BLUE);

Теперь это не работает, но есть ли другие функции, которые позволяют мне это делать? Или, черт возьми, есть функции, чтобы я мог просто использовать явные цвета переднего плана / фона, не используя пары цветов?

Спасибо заранее, и дайте мне знать, если это не достаточно ясно.


РЕДАКТИРОВАТЬ: После того, как вы попробуете это, вы можете переопределить пары, используя init_pairи проблема в моем коде была где-то еще.

1 ответ

Вы можете определить до 7 пар цветов одновременно и показать их все по порядку, если хотите. Вы просто меняете номер и обновляете. например. (мы сделаем это с 3) см. здесь для распечатки примера с 7

 #include  <curses.h>

 int COLOR_PAIR (int PAIR_NUMBER)

 init_pair(1, COLOR_GREEN, COLOR_RED);
 init_pair(2, COLOR_GREEN, COLOR_BLUE);
 init_pair(3, COLOR_RED, COLOR_BLUE);

 for (i=1, i <=3, i++){
   attroffset(A_BOLD)
   attrset(COLOR_PAIR(i))
   refresh();
   sleep(1);
}

обратите внимание, если у вас много пар и второй цвет всегда один и тот же, или первый цвет уникален в каждой паре, вы можете включить его с помощью attron (), например, attron(COLOR_PAIR(COLOR_BLUE)); (это не будет работать в наших определениях)

Вы можете посмотреть пример attron здесь

Другие вопросы по тегам