C++ устанавливает цвет шрифта на черный

PS: я использую Code::blocks
недоступно conio2.h

Я хочу установить цвет шрифта на черный с помощью Windows API

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), XXXXXX);

Что я должен заполнить в XXXXXX?

2 ответа

Решение

Из документации:

Атрибуты переднего плана определяют цвет текста. Атрибуты фона задают цвет, используемый для заливки фона ячейки. Другие атрибуты используются с DBCS.

Приложение может комбинировать константы переднего и заднего плана для получения разных цветов. Например, следующая комбинация приводит к яркому голубому тексту на синем фоне.

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE\

Если фоновая константа не указана, фон черный, а если не указана постоянная переднего плана, текст черный. Например, следующая комбинация создает черный текст на белом фоне.

BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED

Цвет шрифта представлен комбинацией нескольких возможных атрибутов:

FOREGROUND_BLUE       Text color contains blue.  
FOREGROUND_GREEN      Text color contains green.  
FOREGROUND_RED        Text color contains red.  
FOREGROUND_INTENSITY  Text color is intensified.  

В вашем случае, так как вы хотите, чтобы цвет переднего плана был черным, вы не должны передавать никаких атрибутов вообще:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);

Как отмечает Бен Фойгт в комментариях ниже, это приведет к черному тексту на черном фоне. Возможно, вы захотите указать комбинацию атрибутов фона, чтобы текст был читабельным. Например (черным по белому):

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
    BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
Другие вопросы по тегам