【问题标题】:I want to change Cmd Font Style我想更改 Cmd 字体样式
【发布时间】:2015-11-01 10:08:18
【问题描述】:

我想用 C - Coding 更改 Cmd 字体。

但我不知道如何改变它。

我想更改基本字体 -> 终端字体。

这是我的代码

CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof cfi;
cfi.nFont = 0;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = 16;
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL;
wcscpy_s(cfi.FaceName,9, L"Terminal");
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);

我的开发环境在 Windows 10 上。

【问题讨论】:

  • 工作正常。默认已经是终端,请确保您可以看到差异。其他的是“Consolas”和“Lucida Console”。不要对 wcscpy_s() 撒谎。

标签: c++ c cmd window windows-console


【解决方案1】:

SetCurrentConsoleFontEx() 函数的问题在于字体的宽度不是可选的。您必须使用与 Y 大小一致并受所选字体支持的值。

对于Terminal,以下应该有效:

cfi.dwFontSize.X = 12;
cfi.dwFontSize.Y = 16;

如果要检查可用的字体大小,可以枚举字体。例如,使用这个小代码:

// callback to display some infos about one font 
int CALLBACK logfont(_In_ const LOGFONT    *lplf, 
    _In_ const TEXTMETRIC *lptm,
    _In_       DWORD      dwType,
    _In_       LPARAM     lpData
    )
{
    wcout << L"Font " << (wchar_t*)lplf->lfFaceName << L" " << lplf->lfHeight<<L" "<<lplf->lfWidth <<endl;
    return 1;
}

// this callback is then used in a statement like:  
EnumFonts(GetDC((HWND)GetStdHandle(STD_OUTPUT_HANDLE)),L"Terminal", logfont, NULL);

有关已安装字体的更多深入信息,this MSDN 文章可能会让您感兴趣。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多