Продолжаем устранять пробелы в знаниях языка Си. Сегодня я расскажу о том, как изменить цвет фона и выводимого текста в консоли. Для изменения фона и текста используются разные методы, которые сейчас рассмотрим.
Итак, чтобы изменить фон, будем использовать функцию system, в которую будем передавать строку следующего вида: «color <A> <B> «, где <A> и <B> — шестнадцатеричные цифры — первая задает цвет фона, а вторая — цвет переднего плана (цвет шрифта).
- 0 — черный
- 1 — синий
- 2 — зеленый
- 3 — голубой
- 4 — красный
- 5 — лиловый
- 6 — желтый
- 7 — белый
- 8 — серый
- 9 — свело-синий
- A — светло-зеленый
- B — светло-голубой
- С — светло-красный
- E — светло-желтый
- F — ярко-белый
Пример
Думаю с цветом фон проблем не возникло, тогда идем дальше, будем менять цвет слов, символов, а также фон за ними. В этом случае наши действия похожи — нам придется вызывать всего одну функцию, правда перед этим нужно будет подключить заголовочный файл windows.h, а также получить дескриптор консоли. Для лучшего понимания рассмотрим все в следующем листинге.
Как видно из листинга, цвет текста и фона изменяется вызовом функции SetConsoleTextAttribute, которая принимает два параметра: дескриптор консоли и выражение вида (WORD)((Background << 4) | Text)), где, как вы уже догадались, Background — цвет фона именно за теми символами, которые выводятся, а Text — цвет текста.
В отличие от первого случая с функцией system, параметры Bacground и Text являются числовыми, поэтому необходимо цвета, которые имеют буквенное обозначение, заменять их эквивалентами. Например: A = 10, B = 11 и т.д.
Для удобства записи, а также чтобы не запоминать все числа, которые соответствуют цветам, можно создать перечисление, содержащие все цвета. После этого можно будет просто использовать имя цвета вместо соответствующего чисел.
Следует заметить, что если Вам необходимо изменить цвет всего фона, то делать это нужно в первую очередь, так как если вы сделаете иначе, то все, что вы выделили функцией SetConsoleTextAttribute будет иметь другой цвет, заданный в colors.
Листинг рабочей программы