首页 > 解决方案 > C 编程 ncurses 在多个窗口上的颜色不起作用

问题描述

我在 Linux 上使用 ncurses,我创建了两个窗口(winReception 和 winTransmission),基本上 winTransmission 用于编写要在 winReception 中打印的内容。所以,我想以某种颜色打印 winReception 中的文本,但它无法正常打印,没有颜色。

关于为什么它不起作用的任何想法?我尝试更改窗口的颜色,但它改变了窗口中所有文本的颜色,这不是我想要的。

编辑:忘了提到 winTransmission 不需要改变颜色。只有 winReception 需要改变颜色。

这是您需要了解我在做什么的代码:

    initscr();

    /* WINDOW RECEPTION */
    winReception = newwin(27, 0, 0, 0);

    /* WINDOW TRANSMISSION */
    winTransmission = newwin(8, 0, 27, 0);

    if (!has_colors()) {
        endwin();
        fprintf(stderr, "Error - no color support on this terminal\n");
        exit(1);
    }

    if (start_color() != OK) {
        endwin();
        fprintf(stderr, "Error - could not initialize colors\n");
        exit(2);
    }

    init_pair(1, COLOR_RED, COLOR_BLACK);
    init_pair(2, COLOR_RED, COLOR_GREEN);


    attrset(COLOR_PAIR(1));
    /* WINDOW RECEPTION */
    mvwprintw(winReception, 1, 2, "%s", textinwindow);
    wrefresh(winReception);

    /* WINDOW TRANSMISSION */
    touchwin(winTransmission);
    wclear(winTransmission);
    wrefresh(winTransmission);

标签: ccolorsncurses

解决方案


您设置颜色属性的唯一地方是

attrset(COLOR_PAIR(1));

但这仅适用于stdscr

也许你的意思是

wattrset(winReception, COLOR_PAIR(1));

推荐阅读