VS2015控制檯中獲取和修改當前字型大小(2-2)
2.2 GetConsoleFontSize()函式
GetConsoleFontSize()函式的作用是獲取指定控制檯輸出視窗字型的尺寸。
2.2.1 函式介紹
GetConsoleFontSize()函式的格式為
COORD WINAPI GetConsoleFontSize(
HANDLE hConsoleOutput
,DWORD nFont
);
其中,hConsoleOutput是控制檯輸出視窗的控制代碼;nFont是指定的要獲取的字型在系統控制檯字體表中的索引,可以通過“2.1 GetCurrentConsoleFont()函式”中提到的GetCurrentConsoleFont()函式獲取。
2.2.2 相關程式碼
通過GetCurrentConsoleFont()函式獲取控制檯當前字型大小的程式碼如下所示。
COORD currentFontCoord = GetConsoleFontSize(hOutput, consoleCurrentFont.nFont);
printf("通過GetConsoleFontSize()函式獲取控制檯當前字型長度是%d, 高度是%d.\n", currentFontCoord.X, currentFontCoord.Y);
其中,hOutput是“2.1.3 相關程式碼”中通過GetStdHandle()函式獲取到的控制檯輸出視窗控制代碼。輸出的效果如圖2所示。
圖2 通過GetConsoleFontSize()函式獲取到的字型資訊
3 設定當前字型大小
通過SetCurrentConsoleFont()函式設定當前字型大小。
3.1 函式介紹
SetCurrentConsoleFont()函式的作用是設定當前控制檯字型的擴充套件資訊。該函式的格式是
BOOL WINAPI SetCurrentConsoleFontEx( HANDLE hConsoleOutput ,BOOL bMaximumWindow ,PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx );
其中,引數hConsoleOutput和bMaximumWindow與GetCurrentConsoleFont()函式引數含義相同;lpConsoleCurrentFontEx是CONSOLE_FONT_INFOEX結構物件的指標。
3.2 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指定了使用何種字型。
3.3 相關程式碼
使用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()函式設定了字型尺寸