我想改变Cmd字体样式

时间:2015-08-09 11:07:16

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

我想用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上。

1 个答案:

答案 0 :(得分: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文章可能会让您感兴趣。