Zmiana rozmiarów okna i bufora konsoli

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 5018 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)
Propozycje książek