Поскольку BGI устарел, и большая часть его исходного кода, по-видимому, отсутствует на исходном веб-сайте, я намеревался разработать свой собственный механизм обработки цветов, который будет воздействовать на линии по отдельности.До сих пор 16 цветов, которые может принимать «SetConsoleTextAttribute ()» из windows.h, работали нормально, но я намеревался использовать больше цветов (используя RGB вместо 0xbf), чтобы улучшить его внешний вид и раскрасить цвет.собственный ASCII art.
"SetTextColor ()", кажется, маршрут, который я хочу пройти.Я настроил функцию тестирования, чтобы увидеть, работает ли она.Вот фрагмент кода с настройкой.
HDC hType; // Handle DC, save some work to reduce repetition
int initColor () // Initializes engine
{
hType = GetDC (GetConsoleWindow ());
printf ("String Hexadecimal\n");
testcolorR (RGB(255, 0, 0)); // Red
testcolorR (RGB(0, 255, 0)); // Green
testcolorR (RGB(0, 0, 255)); // Blue
getch (); // Pause to see results
return 0; // Exit success
}
// Take in RGB
void colortextR (COLORREF rgbcolor)
{
SetTextColor (hType, rgbcolor);
}
// Test RGB colors
int testcolorR (COLORREF color)
{
colortextR (color);
printf ("Hello %#x\n", color);
return 0;
}
Однако в командной строке цвет не изменился и остался в качестве светло-серого по умолчанию, но это результат.
- Шестнадцатеричная строка
- Привет 0xff
- Привет 0xff00
- Привет 0xff0000
Это означает, что RGBцвет передается, но что-то еще вызывает эту проблему.Я подозреваю, что виновником является функция GetConsoleWindow ().