为了使用Windows使用转义字符输出彩色文本,您必须启用该标志。我可以启用该标志,但这样做会强调控制台中的每一行,甚至是在启用ENABLE_VIRTUAL_TERMINAL_PROCESSING
之前打印的行(这是用于打开彩色输出的标志)。
CORE_INFO("Output before ENABLE_VIRTUAL_TERMINAL_PROCESSING is enabled");
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hOut == INVALID_HANDLE_VALUE) {
CORE_ERROR("INVALID_HANDLE_VALUE: %d", GetLastError());
return;
}
DWORD consoleMode = 0;
if (!GetConsoleMode(hOut, &consoleMode)) {
CORE_ERROR("GetConsoleMode failed: %d", GetLastError());
return;
}
consoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
if (!SetConsoleMode(hOut, consoleMode)) {
CORE_ERROR("SetConsoleMode failed: %d", GetLastError());
return;
}
CORE_INFO("Output after ENABLE_VIRTUAL_TERMINAL_PROCESSING is enabled");
以下是运行后代码的输出:http://i.imgur.com/48YmKzW.png
关闭应用程序会将控制台恢复正常,并保持着色:http://i.imgur.com/QgtHsT8.png
逐行逐行代码,一旦调用SetConsoleMode(hOut, consoleMode);
,所有行都会加下划线,这让我相信如何启用标志是一个错误,但我正在关注MSDN所说的内容做。我无法链接它,因为我没有足够的代表。
如果有人对于为什么会发生这种情况有一些见解,我会非常感激。