Reducing console size

后端 未结 4 2000
孤街浪徒
孤街浪徒 2021-01-06 16:27

I got a problem with changing console size. This is my code:

BOOL setConsole(int x, int y)
{
hStdin = GetStdHandle(STD_INPUT_HANDLE); 
hStdout = GetStdHandle         


        
4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-06 16:46

    I modified the code provided by 'Software_Designer' on Oct 15' 12 and created a command line utility to set the console size and scroll buffers.

    I compiled it using DEV C++ (http://www.bloodshed.net/devcpp.html).

    An executable is included in https://sourceforge.net/projects/wa2l-wintools/. I hope this helps.

    /*
     * consolesize.cpp - set console size and buffer dimensions
     *
     * [00] 02.07.2016 CWa  Initial Version
     *
     * inspired by: http://stackoverflow.com/questions/12900713/reducing-console-size
     *
     */
    
    #include 
    #include  
    
    using namespace std;
    
    
    // SetWindow(Width,Height,WidthBuffer,HeightBuffer) -- set console size and buffer dimensions
    //
    void SetWindow(int Width, int Height, int WidthBuffer, int HeightBuffer) { 
        _COORD coord; 
        coord.X = WidthBuffer; 
        coord.Y = HeightBuffer; 
    
        _SMALL_RECT Rect; 
        Rect.Top = 0; 
        Rect.Left = 0; 
        Rect.Bottom = Height - 1; 
        Rect.Right = Width - 1; 
    
        HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);      // Get Handle 
        SetConsoleScreenBufferSize(Handle, coord);            // Set Buffer Size 
        SetConsoleWindowInfo(Handle, TRUE, &Rect);            // Set Window Size 
    }  // SetWindow
    
    
    
    // main(Width,Height,WidthBuffer,HeightBuffer) -- main
    //
    int main(int argc, char *argv[]) {     
        int width = 80;
        int height = 25;
        int wbuffer = width + 200;
        int hbuffer = height + 1000;
    
        if ( argc == 5 ){
            width = atoi(argv[1]);
            height = atoi(argv[2]);
            wbuffer = atoi(argv[3]);
            hbuffer = atoi(argv[4]);
        } else if ( argc > 1 ) {
            cout << "Usage: " << argv[0] << " [ width height bufferwidth bufferheight ]" << endl << endl;
            cout << "  Where" << endl;
            cout << "    width            console width" << endl;
            cout << "    height           console height" << endl;
            cout << "    bufferwidth      scroll buffer width" << endl;
            cout << "    bufferheight     scroll buffer height" << endl;
            return 4;
        }    
    
        SetWindow(width,height,wbuffer,hbuffer);
        return 0;
    } 
    

提交回复
热议问题