我正在使用WinAPI寫一個控制檯應用程序,我注意到一個奇怪的行爲
SetCurrentConsoleFontEx
函數。在WinAPI控制檯應用程序中使用多種字體類型
應用程序使用兩種類型的字體:
// small font
CONSOLE_FONT_INFOEX font0;
font0.cbSize = sizeof(CONSOLE_FONT_INFOEX);
font0.nFont = 0;
font0.dwFontSize = { 8, 16 };
font0.FontFamily = FF_DONTCARE;
font0.FontWeight = FW_NORMAL;
wcscpy_s(font0.FaceName, L"Consolas");
// large font
CONSOLE_FONT_INFOEX font1;
font1.cbSize = sizeof(CONSOLE_FONT_INFOEX);
font1.nFont = 1;
font1.dwFontSize = { 16, 32 };
font1.FontFamily = FF_DONTCARE;
font1.FontWeight = FW_BOLD;
wcscpy_s(font1.FaceName, L"Consolas");
SetCurrentConsoleFontEx(outHnd, FALSE, &font1)
printf("This text is big!\n");
SetCurrentConsoleFontEx(outHnd, FALSE, &font0);
printf("This text is small!\n");
啓動應用文字線條看起來是一樣的(font0
等)之後。
但是,如果我添加Sleep(100)
printf("This text is big!\n")
之間
SetCurrentConsoleFontEx(outHnd, FALSE, &font0)
,
程序會正常運行(第一文本比第2大)。
它也可以當我使用延遲循環:
int i = 0;
while (i < 100000000)
i++;
這究竟是爲什麼以及如何更改字體而不附加延遲功能/循環?
什麼回報渲染示例中的SetCurrentConsoleFontEx調用的值? – tambre
@tambre他們總是返回1. – dsonyy
是的,這個效果是存在的。可以確認 – RbMm