Konsolenanwendung: Größe des Konsolenfensters ändern

Windows API

Die Fenstergröße bei Windows Konsolenanwendungen ist u.U. etwas knapp bemessen. Vor allem die Breite lässt sich vom Anwender nicht beliebig anpassen. Dieser Artikel beschreibt, wie die Größe der Konsole angepasst werden kann.
Zunächst ist zu sagen, dass die Konsole zwei verschiedene Größen hat. Die ScreenBuffer Größe gibt den Bereich innerhalb des Fensters an. Vor allem in vertikaler Richtung kommt diesem Wert hinsichtlich des scrollbaren Bereichs besondere Bedeutung zu. Die tatsächliche Fenstergröße ist immer kleiner als die ScreenBufferSize. Die folgende Funktion prüft zunächst die aktuellen Daten der Konsole und passt sie anschließend an:

#include "windows.h"

void ResizeConsole(short x, short y)
{
	HANDLE hStdout;
	hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 

	CONSOLE_SCREEN_BUFFER_INFO Info;
	SMALL_RECT rcWindow; 

	// Aktuelle Fenster- und Buffergröße
	GetConsoleScreenBufferInfo(hStdout, &Info);

	// Neue Fenstergröße
	rcWindow = Info.srWindow;
	rcWindow.Right  = x;
	rcWindow.Bottom  = y;

	// Neue Buffergröße, wenn nötig
	COORD size = Info.dwSize;
	if (size.X < x) size.X = x+1;
	if (size.Y < y) size.Y = y+1;

	SetConsoleScreenBufferSize(hStdout, size);
	SetConsoleWindowInfo( hStdout, TRUE,  &rcWindow);
}

Diskussion

Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...

Name:

Nachricht:


doxapp c++
Zur Übersicht
home