每次运行此代码(在Win7上)时,控制台都会在两个方向上缩小1个字符。
int wmain( INT argc, WCHAR **argv )
{
CONSOLE_SCREEN_BUFFER_INFOEX csbi;
csbi.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
GetConsoleScreenBufferInfoEx(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
wprintf(L"Window: %u x %u\n", csbi.srWindow.Right - csbi.srWindow.Left + 1, csbi.srWindow.Bottom - csbi.srWindow.Top + 1);
SetConsoleScreenBufferInfoEx(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
return 0;
}
我怀疑这种预期的行为。有记录吗?在较新版本的Windows中它是否更好?这是一个运行它几次的剪辑。
号码:\测试\释放> test.exe的
窗口:99 x 41
号码:\测试\释放> test.exe的
窗口:98 x 40
号码:\测试\释放> test.exe的
窗口:97 x 39
答案 0 :(得分:1)
Windows控制台API中长期存在的“无法修复”错误。 您只需要做其他所有人都要做的事情,然后增加window.Bottom和window。阅读后立即添加。
GetConsoleScreenBufferInfoEx(GetStdHandle(STD_OUTPUT_HANDLE), &csbi)
++csbi.srWindowBottom;
++csbi.srWindowRight;