- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将控制台字体更改为自定义字体,但这段特定的代码片段似乎没有完成任何事情,尽管这是我在尝试在 Internet 上寻找解决方案时想到的。我通过手动安装并将其添加到带有注册表的控制台,仅使用此自定义字体测试了 SetCurrentConsoleFontEx,它运行正常。
#include <iostream>
#include <Windows.h>
int main()
{
std::cout << "Default font" << std::endl;
system("pause");
HANDLE m_stdOut = GetStdHandle(STD_OUTPUT_HANDLE);
AddFontResourceEx(L"Iosevka.ttf", FR_PRIVATE, 0);
SendNotifyMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
CONSOLE_FONT_INFOEX cfie;
ZeroMemory(&cfie, sizeof(cfie));
cfie.cbSize = sizeof(cfie);
cfie.dwFontSize.Y = 21;
lstrcpyW(cfie.FaceName, L"Iosevka");
SetCurrentConsoleFontEx(m_stdOut, false, &cfie);
std::cout << "Custom font" << std::endl;
RemoveFontResource(L"Iosevka.ttf");
system("pause");
return 0;
}
最佳答案
您正在使用 FR_PRIVATE
标志调用 AddFontResourceEx()
,这意味着该字体仅对您的进程可用。
不幸的是,控制台窗口不是您进程的一部分(GetWindowThreadProcessId()
就在于此!)。它由系统进程托管(Win 7 之前为“csrss.exe”,此后为“conhost.exe”)。
参见:Windows Command-Line: Inside the Windows Console
要使字体可用于控制台,您必须删除 FR_PRIVATE
标志或永久安装字体。
关于c++ - AddFontResource + SetCurrentConsoleFontEx 没有改变控制台字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53904630/
我正在尝试创建一个函数(在 C++ 中),该函数使用 WinAPI 来创建类似于控制台中的“ header ”的内容。通过“标题”,我只是希望文本为另一种颜色并且粗体。我可以更改颜色,但将文本加粗令人
对于 16 个字符或更长的字体名称,我无法让它工作,但控制台本身显然没有此限制。有谁知道一种编程方式来设置将与内置“Lucida Sans Typewriter”或开源“Fira Code Retin
编译此代码时: PCONSOLE_FONT_INFOEX Font_Info; //Adjust heights Font_Info.dwFontSize.X = 9; Font_Info.dwFon
我正在尝试将控制台字体更改为自定义字体,但这段特定的代码片段似乎没有完成任何事情,尽管这是我在尝试在 Internet 上寻找解决方案时想到的。我通过手动安装并将其添加到带有注册表的控制台,仅使用此自
其他人推荐 SetCurrentConsoleFontEx function但我不知道如何将它应用到我的项目中。 我只想更改部分文本的字体大小,而不是所有文本。 SetCurrentConsoleFo
我是一名优秀的程序员,十分优秀!