我正在尝试创建一个函数(在 C++ 中),该函数使用 WinAPI 来创建类似于控制台中的“ header ”的内容。通过“标题”,我只是希望文本为另一种颜色并且粗体。我可以更改颜色,但将文本加粗令人沮丧。
我读过有关使用 SetCurrentConsoleFontEx() 将文本加粗的混合答案;有些人说这是可能的,而另一些人则说不可能(以一种不太直接的方式)。我看到一条评论 this question这表示粗体和颜色更改可以应用于单个字符。
这就是我正在尝试的。当然,此代码已简化。
auto errormsg = []() { std::cout << "\nError!\n" << std::endl; };
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFOEX font_info = { sizeof(font_info) };
try
{
if (!GetCurrentConsoleFontEx(h, false, &font_info)) throw;
auto old_font = font_info;
font_info.FontWeight = FW_BOLD;
if (!SetCurrentConsoleFontEx(h, false, &font_info)) throw;
if (!SetConsoleTextAttribute(h, /* A short for color ID */)) throw;
std::cout << /* Header text here */ << std::endl;
// Restore old font and old font color...
}
catch (...)
{
errormsg();
exit(1);
}
虽然我在这里使用 C++ 功能,但我也可以使用纯 C 解决方案;当然,我更喜欢最简单的。
编辑
澄清一下,问题是当我恢复旧的字体时,整个控制台窗口都会恢复。我显然不希望这种情况发生。
最佳答案
关于c++ - SetCurrentConsoleFontEx 用于将文本设为粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59670949/