![](/img/trans.png)
[英]AddFontResource + SetCurrentConsoleFontEx are not changing a console font
[英]SetCurrentConsoleFontEx for Making Text Bold
我正在嘗試創建一個函數(在 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 解決方案沒問題; 當然,我更喜歡最簡單的。
編輯
澄清一下,問題是當我恢復舊字體時,整個控制台窗口都恢復了。 我顯然不希望這種情況發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.