Improved Console 4.0

Mehr Kontrolle für Win32 Character-Mode Applications!

Getting Started

1. Installation

Downloaden Sie die Improved Console und entpacken Sie das Rar-Archiv in ein beliebiges Verzeichnis. Sie erhalten folgende Dateien:

Aus den beiden Source-Dateien eine statische Library zu erstellen, sollte für Sie kein Problem darstellen (wenn doch, lesen Sie bitte auf der "Für Programmieranfänger"-Seite weiter). Bei etwaigen Problemen lesen Sie bitte die Hinweise unter "Wichtig" auf der Download-Seite. Sollte das Problem weiterhin bestehen, melden Sie sich in der Konsolensparte des C++.de-Forums.

2. Anwendung

Um mit der Improved Console umgehen zu können, reicht die Mover-Demo (deren Quellcode mit vielen Kommentaren gespickt auf der Download-Seite zu finden ist) vollkommen aus. Der weitere Umgang ist selbsterklärend. Sollten dennoch Fragen auftauchen konsultieren Sie die FAQ bzw. melden Sie sich in der Konsolensparte des C++.de-Forums.

3. Informationen für Fortgeschrittene (Implementierungs-Informationen)

Ein besonderes Augenmerk ist auf drei Stellen der Implementierung zu richten:

- Der Konstruktor deaktiviert den Buffered-Mode und schaltet standardmäßig in den One-Screen-Mode. Dabei wird der Konsolenpuffer auf die selbe Größe wie das Konsolenfenster gesetzt und ENABLE_WRAP_AT_EOL_OUTPUT deaktiviert. Ein Scrollen ist dann nicht mehr möglich. Ausgaben, die über das Zeilenende hinaus gehen, müssen allerdings selbstständig umgebrochen werden.

- Im Konstruktor wird die Funktion SetConsoleDisplayMode() aus der kernel32.dll nachgeladen, da sie zwar bereits implementiert aber noch nicht in der <windows.h> deklariert ist.

- Die Größe des Konsolenfensters wird geändert, in dem sie zuerst auf eine minimale Einheitsgröße gesetzt und danach auf die gewünschte Größe erweitert wird. Das scheint auf den ersten Blick kompliziert erspart aber einige Umständlichkeiten: Das Konsolenfenster darf nämlich niemals größer als der darunterliegende Konsolenpuffer sein. Sollte nun zB eine Verkleinerung in X-Richtung und eine Vergrößerung in Y-Richtung gewünscht sein, müsste dieses Vorhaben auf 2 Aufrufe aufgesplittet werden. Alleine um herauszufinden wie vorzugehen ist, benötigt man mehr WinAPI-Aurufe als in der benutzten Implementierung.