【问题标题】:VS2019 Output Window Comes with lot of whitespaceVS2019 输出窗口带有大量空白
【发布时间】:2021-08-29 09:47:16
【问题描述】:

我认为这个问题以前没有被问过,但这里是:

当我在 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

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

I dont have enough reputation to embed the image, so here's a link

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

提前致谢。

【问题讨论】:

  • 您发布的图像只是一个滚动条的PNG图像,只有21像素宽。我没有看到任何控制台窗口。

标签: c++ visual-studio window output whitespace


【解决方案1】:

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

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

#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;
}

【讨论】:

  • @Makhan 感谢您对我们提供的帮助感到满意。如果您的案例已经解决,请帮忙标记答案。
【解决方案2】:

这听起来可能很奇怪,但请尝试在 cmd -> 属性 -> 布局中检查控制台的大小。如果您修改这些值并再次运行,您的程序会发生什么情况?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多