Scorrimento del buffer dello schermo

Importante

Questo documento descrive le funzionalità della piattaforma della console che non fanno più parte della roadmap dell'ecosistema. Non è consigliabile usare questo contenuto nei nuovi prodotti, ma continueremo a supportare gli utilizzi esistenti per il futuro indefinito. La soluzione moderna preferita è incentrata sulle sequenze di terminale virtuale per garantire la massima compatibilità negli scenari multipiattaforma. Per altre informazioni su questa decisione di progettazione, vedere il documento relativo alla console classica e al terminale virtuale.

Nella finestra della console viene visualizzata una parte del buffer dello schermo attivo. Ogni buffer dello schermo mantiene il proprio rettangolo di finestra corrente che specifica le coordinate delle celle dei caratteri in alto a sinistra e in basso a destra da visualizzare nella finestra della console. Per determinare il rettangolo della finestra corrente di un buffer dello schermo, usare GetConsoleScreenBufferInfo. Quando viene creato un buffer dello schermo, l'angolo superiore sinistro della finestra si trova nell'angolo superiore sinistro del buffer dello schermo della console in corrispondenza di (0,0).

Il rettangolo della finestra può cambiare per visualizzare parti diverse del buffer dello schermo della console. Il rettangolo della finestra di un buffer dello schermo può cambiare nelle situazioni seguenti:

  • Quando Viene chiamato SetConsoleWindowInfo per specificare un nuovo rettangolo di finestra, scorre la visualizzazione del buffer dello schermo della console modificando la posizione del rettangolo della finestra senza modificare le dimensioni della finestra. Per esempi di scorrimento del contenuto della finestra, vedere Scorrimento della finestra di un buffer dello schermo.

    screen buffer window panning around large buffer of content

  • Quando si usa la funzione WriteFile per scrivere in un buffer dello schermo con ritorno a capo in modalità di output end-of-line (EOL), il rettangolo della finestra viene spostato automaticamente, in modo che il cursore venga sempre visualizzato.

  • Quando la funzione SetConsoleCursorPosition specifica una nuova posizione del cursore esterna ai limiti del rettangolo della finestra corrente, il rettangolo della finestra viene spostato automaticamente per visualizzare il cursore.

  • Quando l'utente modifica le dimensioni della finestra della console o usa le barre di scorrimento della finestra, il rettangolo della finestra del buffer dello schermo attivo può cambiare. Questa modifica non viene segnalata come evento di ridimensionamento della finestra nel buffer di input.

In ognuna di queste situazioni, il rettangolo della finestra passa per visualizzare una parte diversa del buffer dello schermo della console, ma il contenuto del buffer dello schermo della console rimane nella stessa posizione. Le situazioni seguenti possono causare lo spostamento del contenuto del buffer dello schermo della console:

  • Quando viene chiamata la funzione ScrollConsoleScreenBuffer , viene copiato un blocco rettangolare da una parte di un buffer dello schermo a un altro.
  • Quando si usa WriteFile per scrivere in un buffer dello schermo con ritorno a capo in modalità di output EOL abilitata, il contenuto del buffer dello schermo della console scorre automaticamente quando viene rilevato il buffer dello schermo della console. Questo scorrimento elimina la riga superiore del buffer dello schermo della console.

ScrollConsoleScreenBuffer specifica il rettangolo del buffer dello schermo della console spostato e le nuove coordinate in alto a sinistra in cui viene copiato il rettangolo. Questa funzione può scorrere una parte o l'intero contenuto del buffer dello schermo della console.

La figura mostra un'operazione ScrollConsoleScreenBuffer che scorre l'intero contenuto del buffer dello schermo della console in modo da diverse righe. Il contenuto delle prime righe viene rimosso e le righe inferiori vengono riempite con un carattere e un colore specificati.

screen buffer window scrolling content off top to discard

Gli effetti di ScrollConsoleScreenBuffer possono essere limitati specificando un rettangolo di ritaglio facoltativo in modo che il contenuto del buffer dello schermo della console all'esterno del rettangolo di ritaglio rimanga invariato. L'effetto del ritaglio consiste nel creare una finestra secondaria (il rettangolo di ritaglio) il cui contenuto viene eseguito senza influire sul resto del buffer dello schermo della console. Per un esempio che usa ScrollConsoleScreenBuffer, vedere Scorrimento del contenuto di un buffer dello schermo.