I would like to write something similar to
cout << "this text is not colorized\n";
setForeground(Color::Red);
cout << "this text shows as red\n";
setForeground(Color::Blue);
cout << "this text shows as blue\n";
for a C++ console program running under Windows 7. I have read that global foreground & background can be changed from cmd.exe's settings, or by calling system() - but is there any way to change things at character-level that can be coded into a program? At first I thought "ANSI sequences", but they seem to be long lost in the Windows arena.
You can use SetConsoleTextAttribute function:
Here's a brief example which you can take a look.
This function affects text written after the function call. So finally you probably want to restore to the original color/attributes. You can use GetConsoleScreenBufferInfo to record the initial color at the very beginning and perform a reset w/
SetConsoleTextAttribute
at the end.Take a look at http://gnuwin32.sourceforge.net/packages/ncurses.htm