2017-03-03 202 views
1

我想製作一個有趣的程序,它顯示隨機數字,但我需要刪除滾動條,使它看起來更有說服力。我設法使程序全屏,但我無法刪除垂直滾動條。 ScreenshotC++如何刪除垂直滾動條?

代碼:

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

當屏幕顯示滿後,您可以清除屏幕,因此滾動條永遠無法顯示。 – Carcigenicate

+0

你知道這樣做嗎? – TheTrialBot

+0

清除控制檯有多種方式,但哪種方式的工作取決於控制檯帶來的用途。 'system(「cls」)'會清除屏幕,但我可能會因爲甚至建議你使用'system'而大吼大叫。另外,您可以查找ANSI轉義碼。其中一個清除屏幕。 – Carcigenicate

回答

0

有許多方法,它們中的一個操縱控制檯的內部緩衝器的大小,以具有窗口的相同的尺寸,然後使用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++頭文件/庫。