Выделить часть текста цветом в консольной программе, использующей Win32 API, например, вывести сообщения об ошибках красным цветом, можно с помощью функции SetConsoleTextAttribute.
Код довольно простой:
#include <windows.h>
#include <iostream>
// определяем дескриптор консоли
HANDLE hConsoleOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
// запоминаем текущие атрибуты текста, они понадобятся позднее для восстановления исходных значений
CONSOLE_SCREEN_BUFFER_INFO csb;
::GetConsoleScreenBufferInfo(hConsoleOutput,&csb);
// задаём красный цвет текста
::SetConsoleTextAttribute(hConsoleOutput,FOREGROUND_RED|FOREGROUND_INTENSITY);
// этот текст будет выведен красным текстом
std::wcout << error_text;
// восстанавливаем исходные значения атрибутов
::SetConsoleTextAttribute(hConsoleOutput,csb.wAttributes);
// этот текст будет выведен исходным (белым) цветом
std::wcout << text << std::endl;
Этот код используется в программе nhcolor, предназначенной для использования в bat файлах для выделения цветом выводимого текста :
Маркировка цветом вывода bat файлов для удобства просмотра и визуального поиска, например, сообщений об ошибках.
Цвет текста в консоли Win32
Интересно. Как, раз хочу быть програмистом, и так легче понять где ошибка.