Цвета в консоли C32 win32 - PullRequest
       14

Цвета в консоли C32 win32

18 голосов
/ 27 февраля 2010
std::cout << "blblabla... [done]" << std::endl;

Можно ли сделать [done] другого цвета и, возможно, жирным? Я использую Windows 7

Ответы [ 5 ]

21 голосов
/ 27 февраля 2010

Это зависит от того, какую ОС вы используете.

Если вы используете Windows, вы хотите SetConsoleTextAttribute :

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  // Get handle to standard output
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);

Вы также можете комбинировать значения.

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

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE

Затем вы можете использовать WriteFile или WriteConsole для фактической записи консоли.

5 голосов
/ 27 февраля 2010

Да, вы просто отправляете стандартную escape-последовательность , например,

    const char* green = "\033[0;32m";
    const char* white = "\033[0;37m";
    const char* red   = "\033[0;31m";
    double profit = round(someComplicatedThing());
    std::cout << (profit < 0 ? red : (profit > 0 ? green : white))
              << "Profit is " << profit << white << std::endl;

Вы также получаете жирный шрифт по сравнению с обычным, цветным фоном и т. Д. На странице Википедии по escape-коду ANSI есть подробности, Bash-Prompt HOWTO есть примеры.

3 голосов
/ 27 февраля 2010

Вы можете использовать эти крошечные библиотеки, которые я использовал лично до . Он очень прост в использовании и интегрируется со стандартными потоками. Он имеет четкую функциональность экрана консоли, кстати. Этот пример взят из кода, который я написал:

    std::cout << con::clr; // Clear the Intro Screen
// fg means the foreground
std::cout << std::endl << std::endl << con::fg_green
    << "\t\tFile Encrypted!";
0 голосов
/ 03 сентября 2013

Быстрый способ: включите #include <stdlib.h>, а затем добавьте system( "color 5B" ); перед желаемым текстом. Так это будет выглядеть так:

#include <stdlib.h>
std::cout << "blblabla..."<<std::endl;
system( "color 5B" );
std::cout<< "[done]" << std::endl;

Вы можете попробовать разные цвета: 1А, 2В, 3С, 4F ...

0 голосов
/ 27 февраля 2010

Да, вы можете использовать систему (); функция для запуска команд с command.com, и одна из них - цвет. Color A даст вам зеленый, который вы хотите. Вы также можете увидеть другие цвета из опции справки color /? , и для смелых вещей вы можете использовать символы из диаграммы ascii, чтобы сделать это. например "\ n" - это символ новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...