簡體   English   中英

SetCurrentConsoleFontEx 使文本加粗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM