【问题标题】:C++ How to remove vertical scrollbar?C ++如何删除垂直滚动条?
【发布时间】:2017-03-03 12:42:10
【问题描述】:

我正在尝试制作一个有趣的程序来显示随机数,但我需要移除滚动条以使其看起来更有说服力。我设法使程序全屏显示,但无法删除垂直滚动条。 Screenshot

代码:

#include <iostream>
#include <Windows.h>
using namespace std;

int main() {
    SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, 0);
    int output;
    bool done = false;
    system("color a");
    while (!done) {
        output = 1 + (rand() % (int)(1000 - 1 + 1));
        cout << output;
    }
}

【问题讨论】:

  • 满屏时可以清屏,这样滚动条就没有机会显示了。
  • 你知道这样做的方法吗?
  • 有多种清除控制台的方法,但哪种方法有效取决于使用的控制台。 system("cls") 会清除屏幕,但我可能会因为建议你使用system 而被骂。此外,您还可以查找 ANSI 转义码。其中一个清除屏幕。
  • 您似乎没有正确使用函数GetConsoleScreenBufferInfo(),发布新的失败代码以解决问题。顺便说一句,如果屏幕 Y 尺寸为 9001,则您的显示器分辨率非常高!

标签: c++ winapi


【解决方案1】:

方法有很多种,其中一种是操纵控制台内部缓冲区的大小,使其与窗口的大小相同,然后使用ShowScrollBar函数去除滚动。

#include <iostream>
#include <Windows.h>
#include <WinUser.h>

using namespace std;

int main() {
    SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, 0);

    HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(hstdout, &csbi);

    csbi.dwSize.X = csbi.dwMaximumWindowSize.X;
    csbi.dwSize.Y = csbi.dwMaximumWindowSize.Y;
    SetConsoleScreenBufferSize(hstdout, csbi.dwSize);

    HWND x = GetConsoleWindow();
    ShowScrollBar(x, SB_BOTH, FALSE);

    int output;
    bool done = false;
    system("color a");

    while (!done) {
        output = 1 + (rand() % (int)(1000 - 1 + 1));
        cout << output;

    }
}

另一种方法是依赖 conio.h 或其他实现用户界面功能的 C/C++ 头文件/库。

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多