Я пытаюсь создать функцию (в C ++), которая использует WinAPI для создания чего-то похожего на «заголовок» в консоли. Под заголовком я просто хочу, чтобы текст был другого цвета и жирным шрифтом. Я могу изменить цвет, но выделение текста жирным шрифтом вызывает разочарование.
Я читал смешанные ответы о выделении текста жирным шрифтом с помощью SetCurrentConsoleFontEx()
; некоторые люди говорят, что это возможно, в то время как другие говорят, что это не так (не очень простым способом). Я наткнулся на комментарий к этому вопросу , в котором говорится, что изменение цвета и может применяться к отдельному персонажу.
Вот что я пытаюсь. Конечно, этот код упрощен.
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 решением; Конечно, я предпочитаю все самое простое.
Редактировать Чтобы уточнить, проблема в том, что когда я восстанавливаю старый шрифт, все окно консоли возвращается обратно. Я, очевидно, не хочу, чтобы это произошло.