GetConsoleFontSize()函数的作用是获取指定控制台输出窗口字体的尺寸。
GetConsoleFontSize()函数的格式为
COORD WINAPI GetConsoleFontSize(
HANDLE hConsoleOutput
,DWORD nFont
);
其中,hConsoleOutput是控制台输出窗口的句柄;nFont是指定的要获取的字体在系统控制台字体表中的索引,可以通过“2.1 GetCurrentConsoleFont()函数”中提到的GetCurrentConsoleFont()函数获取。
通过GetCurrentConsoleFont()函数获取控制台当前字体大小的代码如下所示。
COORD currentFontCoord = GetConsoleFontSize(hOutput, consoleCurrentFont.nFont);
printf("通过GetConsoleFontSize()函数获取控制台当前字体长度是%d, 高度是%d.\n", currentFontCoord.X, currentFontCoord.Y);
其中,hOutput是“2.1.3 相关代码”中通过GetStdHandle()函数获取到的控制台输出窗口句柄。输出的效果如图2所示。
图2 通过GetConsoleFontSize()函数获取到的字体信息
通过SetCurrentConsoleFont()函数设置当前字体大小。
SetCurrentConsoleFont()函数的作用是设置当前控制台字体的扩展信息。该函数的格式是
BOOL WINAPI SetCurrentConsoleFontEx(
HANDLE hConsoleOutput
,BOOL bMaximumWindow
,PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
);
其中,参数hConsoleOutput和bMaximumWindow与GetCurrentConsoleFont()函数参数含义相同;lpConsoleCurrentFontEx是CONSOLE_FONT_INFOEX结构对象的指针。
CONSOLE_FONT_INFOEX结构包含了控制台字体的扩展信息。该结构的格式为
typedef struct _CONSOLE_FONT_INFOEX {
ULONG cbSize;
DWORD nFont;
COORD dwFontSize;
UINT FontFamily;
UINT FontWeight;
WCHAR FaceName[LF_FACESIZE];
} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
其中,cbSize是结构的大小,以字节为单位,该成员变量必须设置为sizeof(CONSOLE_FONT_INFOEX);nFont是要设置的字体在控制台字体表中的索引;dwFontSize是COORD结构的对象,指定了字体的尺寸;FontFamily指定了字体的间距(pitch)和族(family);FontWeight指定了字体的重量,该值的取值范围是100-1000,正常字体的重量是400,加粗的字体重量是700;FaceName指定了使用何种字体。
使用SetCurrentConsoleFont()函数设置当前字体大小代码如下所示。
CONSOLE_FONT_INFOEX ConsoleCurrentFontEx;
ConsoleCurrentFontEx.cbSize = sizeof(CONSOLE_FONT_INFOEX);
ConsoleCurrentFontEx.nFont = 0;
ConsoleCurrentFontEx.dwFontSize.X = 32;
ConsoleCurrentFontEx.dwFontSize.Y = 64;
ConsoleCurrentFontEx.FontFamily = TMPF_VECTOR;
ConsoleCurrentFontEx.FontWeight = 200;
wcscpy(ConsoleCurrentFontEx.FaceName, _T("Courier"));
SetCurrentConsoleFontEx(hOutput, FALSE, &ConsoleCurrentFontEx);
其中,TMPF_VECTOR表示使用向量字体;hOutput是通过GetStdHandle()函数获取到的控制台输出窗口句柄。输出的效果如图3所示。
图3 通过SetCurrentConsoleFont()函数设置了字体尺寸