我试图让一个简单的控制台程序在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();
}
答案 0 :(得分:0)
它可能无法解决任何问题,但我发现有时程序不会在GCC代码块上更新颜色,而且我添加了一个getch();在它的最后,它似乎解决了我有颜色或添加文本到屏幕的任何问题。
确保getch();是在刷新之前
答案 1 :(得分:0)
你不想错过:
attroff(COLOR_PAIR(1)) attroff(COLOR_PAIR(2))
每次打印后?
添加它们,看看会发生什么。
我在x64 win7下使用的是带有code :: blocks的pdcurses,我对颜色没有任何问题。有机会只有MSVC ++有这个问题,但我对此表示怀疑。