Scrollen in einem Bildschirmpuffer

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 .

Das Konsolenfenster zeigt einen Teil des aktiven Bildschirmpuffers an. Jeder Bildschirmpuffer Standard enthält ein eigenes aktuelles Fensterrechteck, das die Koordinaten der oberen linken und unteren rechten Zeichenzellen angibt, die im Konsolenfenster angezeigt werden sollen. Um den aktuellen Modus eines Konsoleneingabepuffers oder Bildschirmpuffers zu bestimmen, verwenden Sie die Funktion GetConsoleMode. Wenn ein Bildschirmpuffer erstellt wird, befindet sich die obere linke Ecke des Fensters in der oberen linken Ecke des Konsolenbildschirmpuffers bei (0,0).

Das Fensterrechteck kann sich ändern, um verschiedene Teile des Konsolenbildschirmpuffers anzuzeigen. Das Fensterrechteck eines Bildschirmpuffers kann sich in den folgenden Situationen ändern:

  • Wenn SetConsoleWindowInfo aufgerufen wird, um ein neues Fensterrechteck anzugeben, scrollt es in der Ansicht des Konsolenbildschirmpuffers, indem die Position des Fensterrechtecks geändert wird, ohne die Größe des Fensters zu ändern. Beispiele für den Bildlauf des Fensterinhalts finden Sie unter Scrollen des Fensters eines Bildschirmpuffers.

    screen buffer window panning around large buffer of content

  • Wenn Die WriteFile-Funktion zum Schreiben in einen Bildschirmpuffer mit aktiviertem Zeilenumbruch (End-of-Line) verwendet wird, wird das Fensterrechteck automatisch verschoben, sodass der Cursor immer angezeigt wird.

  • Wenn die SetConsoleCursorPosition-Funktion eine neue Cursorposition angibt, die sich außerhalb der Grenzen des aktuellen Fensterrechtecks befindet, wird das Fensterrechteck automatisch verschoben, um den Cursor anzuzeigen.

  • Wenn der Benutzer die Größe des Konsolenfensters ändert oder die Bildlaufleisten des Fensters verwendet, kann sich das Fensterrechteck des aktiven Bildschirmpuffers ändern. Diese Änderung wird nicht als Fensteränderungsereignis im Eingabepuffer gemeldet.

In jedem dieser Situationen verschiebt sich das Fensterrechteck, um einen anderen Teil des Konsolenbildschirmpuffers anzuzeigen, aber der Inhalt des Konsolenbildschirmpuffers wird an derselben Position neu Standard. Die folgenden Situationen können dazu führen, dass der Inhalt des Konsolenbildschirmpuffers verschoben wird:

  • Wenn die ScrollConsoleScreenBuffer-Funktion aufgerufen wird, wird ein rechteckiger Block aus einem Teil eines Bildschirmpuffers in einen anderen kopiert.
  • Wenn WriteFile zum Schreiben in einen Bildschirmpuffer mit aktiviertem Umbruch im EOL-Ausgabemodus verwendet wird, scrollen die Inhalte des Konsolenbildschirmpuffers automatisch, wenn das Ende des Konsolenbildschirmpuffers gefunden wird. Dadurch wird die obere Zeile des Konsolenbildschirmpuffers aufgehoben Karte.

ScrollConsoleScreenBuffer gibt das verschobene Konsolenbildschirmpufferrechteck und die neuen oberen linken Koordinaten an, in die das Rechteck kopiert wird. Diese Funktion kann einen Teil oder den gesamten Inhalt des Konsolenbildschirmpuffers scrollen.

Die Abbildung zeigt einen ScrollConsoleScreenBuffer-Vorgang , der den gesamten Inhalt des Konsolenbildschirms um mehrere Zeilen nach oben scrollt. Der Inhalt der obersten Zeilen wird aufgehoben Karte und die unteren Zeilen werden mit einem angegebenen Zeichen und einer angegebenen Farbe gefüllt.

screen buffer window scrolling content off top to discard

Die Effekte von ScrollConsoleScreenBuffer können eingeschränkt werden, indem sie ein optionales Clippingrechteck angeben, sodass der Inhalt des Konsolenbildschirmpuffers außerhalb des Beschneidungsrechtecks unverändert bleibt. Der Effekt des Clippings besteht darin, einen Unterfenster (das Clippingrechteck) zu erstellen, dessen Inhalt gescrollt wird, ohne den Rest des Konsolenbildschirmpuffers zu beeinträchtigen. Ein Beispiel, das ScrollConsoleScreenBuffer verwendet, finden Sie unter Scrollen des Inhalts eines Bildschirmpuffers.