Annotation of mstools/samples/console/size.c, revision 1.1

1.1     ! root        1: #include <windows.h>
        !             2: #include "console.h"
        !             3: 
        !             4: /*********************************************************************
        !             5: * FUNCTION: resizeConBufAndWindow(HANDLE hConsole, SHORT xSize,      *
        !             6: *                                 SHORT ySize)                       *
        !             7: *                                                                    *
        !             8: * PURPOSE: resize both the console output buffer and the console     *
        !             9: *          window to the given x and y size parameters               *
        !            10: *                                                                    *
        !            11: * INPUT: the console output handle to resize, and the required x and *
        !            12: *        y size to resize the buffer and window to.                  *
        !            13: *                                                                    *
        !            14: * COMMENTS: Note that care must be taken to resize the correct item  *
        !            15: *           first; you cannot have a console buffer that is smaller  *
        !            16: *           than the console window.                                 *
        !            17: *********************************************************************/
        !            18: 
        !            19: static void resizeConBufAndWindow(HANDLE hConsole, SHORT xSize, SHORT ySize)
        !            20: {
        !            21:   CONSOLE_SCREEN_BUFFER_INFO csbi; /* hold current console buffer info */
        !            22:   BOOL bSuccess;
        !            23:   SMALL_RECT srWindowRect; /* hold the new console size */
        !            24:   COORD coordScreen;
        !            25: 
        !            26:   setConTitle(__FILE__);
        !            27:   bSuccess = GetConsoleScreenBufferInfo(hConsole, &csbi);
        !            28:   PERR(bSuccess, "GetConsoleScreenBufferInfo");
        !            29:   /* define the new console size */
        !            30:   srWindowRect.Left = srWindowRect.Top = (SHORT) 0;
        !            31:   srWindowRect.Right = (SHORT) (xSize - 1);
        !            32:   srWindowRect.Bottom = (SHORT) (ySize - 1);
        !            33:   /* define the new console buffer size */
        !            34:   coordScreen.X = xSize;
        !            35:   coordScreen.Y = ySize;
        !            36:   /* if the current buffer is larger than what we want, resize the */
        !            37:   /* console window first, then the buffer */
        !            38:   if (csbi.dwSize.X * csbi.dwSize.Y > xSize * ySize)
        !            39:     {
        !            40:     bSuccess = SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect);
        !            41:     PERR(bSuccess, "SetConsoleWindowInfo");
        !            42:     bSuccess = SetConsoleScreenBufferSize(hConsole, coordScreen);
        !            43:     PERR(bSuccess, "SetConsoleScreenBufferSize");
        !            44:     }
        !            45:   /* if the current buffer is smaller than what we want, resize the */
        !            46:   /* buffer first, then the console window */
        !            47:   if (csbi.dwSize.X * csbi.dwSize.Y < xSize * ySize)
        !            48:     {
        !            49:     bSuccess = SetConsoleScreenBufferSize(hConsole, coordScreen);
        !            50:     PERR(bSuccess, "SetConsoleScreenBufferSize");
        !            51:     bSuccess = SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect);
        !            52:     PERR(bSuccess, "SetConsoleWindowInfo");
        !            53:     }
        !            54:   return;
        !            55: }
        !            56: 
        !            57: 
        !            58: /*********************************************************************
        !            59: * FUNCTION: demoSizeInfo(HANDLE hConOut)                             *
        !            60: *                                                                    *
        !            61: * PURPOSE: demonstrate SetConsoleWindowInfo and                      *
        !            62: *          SetConsoleScreenBufferSize. Resize the console buffer and *
        !            63: *          window                                                    *
        !            64: *                                                                    *
        !            65: * INPUT: console output handle to set the information for            *
        !            66: *********************************************************************/
        !            67: 
        !            68: void demoSizeInfo(HANDLE hConOut)
        !            69: {
        !            70:   SHORT sConX, sConY; /* save the current console dimensions */
        !            71: 
        !            72:   myPuts(hConOut, "Let's resize the console buffer and window to a 40 x 25");
        !            73:   myPuts(hConOut, "size screen by using the SetConsoleScreenBufferSize and");
        !            74:   myPuts(hConOut, "SetConsoleWindowInfo APIs. Hit enter to continue...");
        !            75:   myGetchar();
        !            76:   sConX = getConX(hConOut);
        !            77:   sConY = getConY(hConOut);
        !            78:   resizeConBufAndWindow(hConOut, (SHORT) 40, (SHORT) 25);
        !            79:   myPuts(hConOut, "Now let's resize back to our original");
        !            80:   myPuts(hConOut, "size screen.");
        !            81:   myPuts(hConOut, "Hit enter to continue...");
        !            82:   myGetchar();
        !            83:   resizeConBufAndWindow(hConOut, sConX, sConY);
        !            84:   myPuts(hConOut, "Now we're back to our original size. Hit enter to return...");
        !            85:   myGetchar();
        !            86:   return;
        !            87: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.