VS2019输出窗口带有大量空白



我想以前没有人问过这个问题,但是这里是:

当我在VS2019中运行程序时,输出窗口根据错误正确执行。

但是这次我要创建一个程序,它取决于全屏控制台输出窗口的列和行长度。

但是我注意到,由于输出窗口附带的额外空白,列的数量多于行。

我已经修改了我的代码作为示例:

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main() {
SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, 0);
CONSOLE_SCREEN_BUFFER_INFO csbi;
int WindowColumns, WindowRows, DisplayBuffer, DisplayColumns, DisplayRows;
string DisplayMap;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
WindowColumns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
WindowRows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;

return 0;
}

输出如下:

237,67

上面的输出首先显示列,然后显示行。我对此深信不疑。列数多于行数,考虑到我的屏幕分辨率是1920x1080,这应该是相反的

显示输出中生成的空白量的屏幕截图:

我没有足够的信誉来嵌入图像,所以这里有一个链接

我的问题是:我如何摆脱这个额外的空白,它应该只匹配行和列的长度。你能帮我解决这个吗?

提前感谢。

我建议你可以尝试使用SMALL_RECT结构来指定控制台屏幕缓冲区。

我建议你可以按照下面的代码:

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main() {
SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, 0);
CONSOLE_SCREEN_BUFFER_INFO csbi;
int WindowColumns, WindowRows, DisplayBuffer, DisplayColumns, DisplayRows;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
SMALL_RECT rect = csbi.srWindow;
COORD size = { rect.Right + 1,rect.Bottom + 1 };
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), size);//Changes the size of the specified console screen buffer.
WindowColumns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
WindowRows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
return 0;
}

这可能听起来很奇怪,但请尝试在cmd ->属性→布局。如果修改这些值并再次运行,程序会发生什么?

最新更新