CodeNet / Языки программирования / C / C++ / Microsoft Visual C++ / FAQ - Часто задаваемые вопросы / Visual C++ FAQ
Как вывести текст в консольном приложении различными цветами?
Как вывести текст в консольном приложении различными цветами?
Каждый символ сонсольного приложения имеет свои аттрибуты, и Win32 консольные функции могут работать с аттрибутами двумя способами. SetConsoleTextAttribute() работает с символами, записанными в буфере, в то время как FillConsoleOutputAttribute() напрямую изменяет атрибуты символов.
Следующие функции можно использовать для нормального, жирного и обратного текста (предполагается, что класс имеет обработчик консоли через вызов GetStdHandle()):
void CMyConsoleClass::SetTextNormal() { // белым на чёрном - по умолчанию SetConsoleTextAttribute ( m_hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE ); } void CMyConsoleClass::SetTextBold() { // ярко-белым на чёрном SetConsoleTextAttribute ( m_hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY ); } void CMyConsoleClass::SetTextReverse() { // чёрным на белом SetConsoleTextAttribute ( m_hConsole, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE ); }
Обратите внимание, что нет никаких установок для мерцания и подчёркивания, так что Вам прийдётся проявить немного изобратательности, если Вы хотите полностью съэмулировать текстовые режимы ANSI или VT100 данным методом.