首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AddFontResource + SetCurrentConsoleFontEx不会更改控制台字体

AddFontResource + SetCurrentConsoleFontEx不会更改控制台字体
EN

Stack Overflow用户
提问于 2018-12-23 23:00:22
回答 1查看 309关注 0票数 2

我正在尝试将控制台字体更改为自定义字体,但这段特定的代码似乎不能完成任何事情,即使这是我在互联网上寻找解决方案时想出来的。我手动安装了这种自定义字体并将其添加到控制台中,对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;

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-24 01:19:20

您将使用FR_PRIVATE标志调用AddFontResourceEx(),这意味着该字体仅对您的进程可用。

不幸的是,控制台窗口不是您的过程的一部分(GetWindowThreadProcessId()在这方面!)。它由一个系统进程托管( Win 7之前是“csrss.exe”,之后是"conhost.exe“)。

请参阅:Windows Command-Line: Inside the Windows Console

要使该字体可用于控制台,您必须删除FR_PRIVATE标志或永久安装该字体。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53904630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档