Stronę tą wyświetlono już: 5360 razy
Rozmiar okna konsoli jest liczony dość nietypowo w szerokościach i wysokościach pojedynczego znaku. Dzięki temu można ustawić poprawnie szerokość i wysokość dla bufora pamięci i dla samego okna. Niestety poniższe rozwiązanie przeznaczone jest pod systemy Windows i wymaga ono wykorzystania pliku nagłówkowego windows.h. Oto przykład, jak można zmienić rozmiar bufora pamięci i okna za jednym razem:
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); // uchwyt standardowego wyjścia
COORD c2; // struktura potrzebna do ustawienia rozmiarów bufora pamięci
c2.X = 120; // szerokość na 120 szerokości znaków
c2.Y = 40; // wysokość na 40 wysokości znaków
SetConsoleScreenBufferSize(handle, c2); // ustawia rozmiar bufora (wyświetlanego tekstu)
SMALL_RECT sr; // struktura wykorzystywana do ustawienia rozmiaru okna
sr.Left = 0; // na zero
sr.Top = 0; // na zero
sr.Right = c2.X-1; // szerokość o 1 mniejsza od bufora
sr.Bottom = c2.Y-1; // wysokość o 1 mniejsza od bufora
SetConsoleWindowInfo(handle,true,&sr); // ustawia rozmiar okna (jednostka to szerokość i wysokość pojedynczego znaku)
Możliwe jest również ustawienie okna zmaksymalizowanego z jednoczesnym ustawieniem maksymalnych dopasowanych do bieżącego ustawienia monitora rozmiarów okna. Oto przykład:
HWND hwnd = GetConsoleWindow(); // pobieranie uchwytu okna konsoli
ShowWindow(hwnd, SW_SHOWMAXIMIZED); // maksymalizacja okna konsoli
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD c2 = GetLargestConsoleWindowSize(GetStdHandle(STD_OUTPUT_HANDLE)); // zwracanie maksymalnych rozmiarów
SetConsoleScreenBufferSize(handle, c2); // ustawiasz rozmiar bufora
SMALL_RECT sr;
sr.Left = 0;
sr.Top = 0;
sr.Right = c2.X-1;
sr.Bottom = c2.Y-1;
SetConsoleWindowInfo(handle,true,&sr); // ustawiasz rozmiar okna (jednostka to szerokość i wysokość pojedynczego znaku)