Ausgabefunktionen für die Konsolen auf niedriger Ebene
Wichtig
In diesem Dokument werden Konsolenplattformfunktionen beschrieben, die nicht mehr Teil unserer Ökosystem-Roadmap sind. Wir empfehlen nicht, diesen Inhalt in neuen Produkten zu verwenden, aber wir werden weiterhin vorhandene Nutzungen für die unbegrenzte Zukunft unterstützen. Unsere bevorzugte moderne Lösung konzentriert sich auf virtuelle Terminalsequenzen für maximale Kompatibilität in plattformübergreifenden Szenarien. Weitere Informationen zu dieser Designentscheidung finden Sie in unserem klassischen Konsolendokument im Vergleich zum virtuellen Terminal .
Die Ausgabefunktionen der Konsole auf niedriger Ebene bieten direkten Zugriff auf die Zeichenzellen eines Bildschirmpuffers. Eine Reihe von Funktionen liest oder schreibt in aufeinander folgende Zellen, beginnend an einer beliebigen Stelle im Konsolenbildschirmpuffer. Ein anderer Satz von Funktionen liest oder schreibt in rechteckige Zellblöcke.
Die folgenden Funktionen lesen oder schreiben in eine bestimmte Anzahl aufeinander folgender Zeichenzellen in einem Bildschirmpuffer, beginnend mit einer angegebenen Zelle.
Funktion | Beschreibung |
---|---|
ReadConsoleOutputCharacter | Kopiert eine Zeichenfolge von Unicode- oder ANSI-Zeichen aus einem Bildschirmpuffer. |
WriteConsoleOutputCharacter | Schreibt eine Zeichenfolge von Unicode- oder ANSI-Zeichen in einen Bildschirmpuffer. |
ReadConsoleOutputAttribute | Kopiert eine Zeichenfolge mit Text- und Hintergrundfarbattributen aus einem Bildschirmpuffer. |
WriteConsoleOutputAttribute | Schreibt eine Zeichenfolge mit Text- und Hintergrundfarbattributen in einen Bildschirmpuffer. |
FillConsoleOutputCharacter | Schreibt ein einzelnes Unicode- oder ANSI-Zeichen in eine bestimmte Anzahl aufeinander folgender Zellen in einem Bildschirmpuffer. |
FillConsoleOutputAttribute | Schreibt eine Kombination aus Text- und Hintergrundfarbe in eine bestimmte Anzahl aufeinander folgender Zellen in einem Bildschirmpuffer. |
Bei all diesen Funktionen wird beim Auftreten der letzten Zelle einer Zeile das Lesen oder Schreiben in die erste Zelle der nächsten Zeile umbrochen. Wenn das Ende der letzten Zeile des Konsolenbildschirmpuffers auftritt, schließen die Schreibfunktionen alle ungeschriebenen Zeichen oder Attribute aus und die Lesefunktionen melden die Anzahl der tatsächlich geschriebenen Zeichen oder Attribute.
Die folgenden Funktionen lesen oder schreiben in rechteckige Blöcke von Zeichenzellen an einer angegebenen Position in einem Bildschirmpuffer.
Funktion | Beschreibung |
---|---|
ReadConsoleOutput | Kopiert Zeichen- und Farbdaten aus einem angegebenen Block von Bildschirmpufferzellen in einen bestimmten Block in einem Zielpuffer. |
WriteConsoleOutput | Schreibt Zeichen- und Farbdaten in einen angegebenen Block von Bildschirmpufferzellen aus einem bestimmten Block in einem Quellpuffer. |
Diese Funktionen behandeln Bildschirmpuffer und Quell- oder Zielpuffer als zweidimensionale Arrays von CHAR_INFO Strukturen (die Zeichen- und Farbattributedaten für jede Zelle enthalten). Die Funktionen geben die Breite und Höhe des Quell- oder Zielpuffers in Zeichenzellen an, und der Zeiger auf den Puffer wird als Zeiger auf die Ursprungszelle (0,0) des zweidimensionalen Arrays behandelt. Die Funktionen verwenden eine SMALL_RECT Struktur, um anzugeben, auf welches Rechteck im Konsolenbildschirmpuffer zugegriffen werden soll, und die Koordinaten der oberen linken Zelle im Quell- oder Zielpuffer bestimmen die Position des entsprechenden Rechtecks in diesem Puffer.
Diese Funktionen schneiden automatisch das angegebene Bildschirmpufferrechteck ab, um in die Grenzen des Konsolenbildschirmpuffers zu passen. Wenn das Rechteck z. B. untere rechte Koordinaten angibt (Spalte 100, Zeile 50) und der Konsolenbildschirmpuffer nur 80 Spalten breit ist, werden die Koordinaten abgeschnitten, sodass sie (Spalte 79, Zeile 50) sind. Entsprechend wird dieses angepasste Rechteck wieder abgeschnitten, damit es in die Grenzen des Quell- oder Zielpuffers passt. Die Bildschirmpufferkoordinaten des tatsächlichen Rechtecks, aus dem gelesen oder geschrieben wurde, werden angegeben. Ein Beispiel, das diese Funktionen verwendet, finden Sie unter "Lesen und Schreiben von Zeichenblöcken und Attributen".
Die Abbildung zeigt einen ReadConsoleOutput-Vorgang , bei dem clipping auftritt, wenn der Block aus dem Konsolenbildschirmpuffer gelesen wird, und erneut, wenn der Block in den Zielpuffer kopiert wird. Die Funktion meldet das tatsächliche Bildschirmpufferrechteck, aus dem es kopiert wurde.