1. 程式人生 > >VS2015控制檯中獲取和修改當前字型大小(2-2)

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()函式設定了字型尺寸