win32上的pdcurses中的颜色

时间:2013-11-21 15:45:31

标签: winapi pdcurses

我试图让一个简单的控制台程序在windows中工作(它适用于linux)。我在linux上使用curses,当移动到Windows时,我发现移植程序最麻烦的方法是使用pdcurses。我之前在windows中使用过pdcurses,但是使用了win32a插件。但是,我希望这个程序在Windows控制台中运行。

问题在于它似乎完全忽略了所有颜色命令。这是在Windows上的pdcurses的问题,还是我只是愚蠢?即使包装附带的演示也没有颜色。我在Win7 64x上使用MSVC ++ express 2010。

hasColors()返回TRUE。当Ii从文档中运行这个简单的例子时,一切都仍然是黑白的:

#include <curses.h>

int main()

{
    initscr();

    if(has_colors() == FALSE)
    {   endwin();
        printf("Your terminal does not support color\n");
        exit(1);
    }
    start_color();

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

    attron(COLOR_PAIR(1));
    printw("This should be printed in black with a red background!\n");

    attron(COLOR_PAIR(2));
    printw("And this in a green background!\n");
    refresh();


    endwin();
}

2 个答案:

答案 0 :(得分:0)

它可能无法解决任何问题,但我发现有时程序不会在GCC代码块上更新颜色,而且我添加了一个getch();在它的最后,它似乎解决了我有颜色或添加文本到屏幕的任何问题。

确保getch();是在刷新之前

答案 1 :(得分:0)

你不想错过:

attroff(COLOR_PAIR(1)) attroff(COLOR_PAIR(2))

每次打印后

添加它们,看看会发生什么。

我在x64 win7下使用的是带有code :: blocks的pdcurses,我对颜色没有任何问题。有机会只有MSVC ++有这个问题,但我对此表示怀疑。