gpt4 book ai didi

c++ - AddFontResource + SetCurrentConsoleFontEx 没有改变控制台字体

转载 作者:搜寻专家 更新时间:2023-10-31 00:51:51 24 4
gpt4 key购买 nike

我正在尝试将控制台字体更改为自定义字体,但这段特定的代码片段似乎没有完成任何事情,尽管这是我在尝试在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com