我正在使用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