每次我运行此代码时(在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中是否更好?这是几次运行的片段。
p:\test\release> test.exe
视窗:99 x 41
p:\test\release> test.exe
视窗:98 x 40
p:\test\release> test.exe
视窗:97 x 39
最佳答案
Windows控制台API中长期存在的“无法修复”错误。
您只需要做其他人要做的事情,然后增加window.Bottom和window.Read之后就可以了。
GetConsoleScreenBufferInfoEx(GetStdHandle(STD_OUTPUT_HANDLE), &csbi)
++csbi.srWindowBottom;
++csbi.srWindowRight;