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 解决方案;当然,我更喜欢最简单的东西。
Edit
澄清一下,问题是当我恢复旧字体时,整个控制台窗口都会恢复。我显然不希望这种情况发生。
这是控制台的默认行为。
如果要在控制台窗口中支持不同的粗体字体,可能需要通过反馈中心提交反馈。
- 如何在反馈中心应用中提交?
我想你需要的所有东西都在这里 https://learn.microsoft.com/en-us/windows/console/window-and-screen-buffer-size
相关文章:
- SetCurrentConsoleFontEx 用于使文本加粗
- 是否可以在运行时调用用于选择要调用的用户定义文本的逻辑?
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- 用于计算文本宽度的模块
- 函数模板不适用于字符串文本
- 用于引发字符串文本C++的编译器错误的宏
- 用于分解大量文本数据的算法
- C++ ->尝试逐字阅读一行文本。如何使指针等效于用于存储输入的当前二维数组
- 随机访问文件格式,用于分层组织的二进制文件和文本文件
- C :将文本文件的内容存储在2D数组中,作为字符串(用于NULL终结器的麻烦?)
- 用于读取文本文件c++的Readline循环
- C11/C++11 宏,用于将常量字符串与文本整数相关联
- 有关重载用于读取文本文件的输入运算符>>的问题
- 用于将用户输入放入文本文件的 C++ 代码
- 确定用于呈现文本的字符的 y 位置
- 函数模板,用于将字符串文本转换为 std::array
- 用于指定零浮点文本的语法
- 用于删除图像中的非文本区域的开源代码
- gstreamer 管道代码,用于通过来自相机的实时流式传输而不是图像显示文本
- 用于匹配 C++ 范围字符串文本的正则表达式 (L "..." )