彩色文本Windows命令行

问题描述 投票:0回答:2

最近我在终端中摆弄颜色。

我正在使用here中的示例程序在不同的控制台中进行测试。

在 Microsoft Store 的

Windows Terminal
中,您可以看到颜色:

下面是完全相同的程序,但在

cmd.exe
中你看不到颜色。

然而,在同一个控制台中,当我运行命令

gcc
时,我确实得到了额外的颜色(实际上是白色和红色):

现在我的问题是,

gcc
有什么不同之处,仍然能够打印彩色文本?除了上面链接的网站上写的以外,我找不到任何其他方法可以在控制台上获取彩色文本。

c windows terminal colors console
2个回答
1
投票

0
投票

这个问题可以帮助你:

cmd.exe
屏幕截图中,您没有禁用旧版控制台模式。

这是您需要的功能列表(在本例中我们使用红绿):

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO consoleBuffer;
GetConsoleScreenBufferInfo (hStdOut, &consoleBuffer);
TCHAR string = "AABBCCDDEEFFGG";
int length = 12; // or use string functions
DWORD written;
WriteConsoleOutputAttribute(hStdOut, consoleBuffer.dwCursorPosition, FOREGROUND_RED | BACKGROUND_GREEN, length, consoleBuffer.dwCursorPosition, &written);
WriteConsoleOutputCharacter(hStdOut, &string, length, consoleBuffer.dwCursorPosition, &written);
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO consoleBuffer;
TCHAR string = "AABBCCDDEEFFGG";
int length = 12; // or use string functions
DWORD written;
GetConsoleScreenBufferInfo(hStdOut, &consoleBuffer);
SetConsoleTextAttribute(hStdOut, FOREGROUND_RED | BACKGROUND_GREEN);
DWORD written;
WriteConsoleOutputCharacter(hStdOut, &string, length, consoleBuffer.dwCursorPosition, &written);

注意:您可以使用

WriteConsole()
代替使用
WriteConsoleOutputCharacter()
功能。

© www.soinside.com 2019 - 2024. All rights reserved.