Выделить часть текста цветом в консольной программе, использующей 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 API в c++
Метки:

Одна мысль о “Задать цвет текста в консоли с Win32 API в c++

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *