Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un buffer dello schermo è una matrice bidimensionale di dati carattere e colore per l'output in una finestra della console. Una console può avere più buffer dello schermo. Il buffer dello schermo attivo è quello visualizzato sullo schermo.
Il sistema crea un buffer dello schermo ogni volta che crea una nuova console. Per aprire un handle nel buffer dello schermo attivo di una console, specificare il valore CONOUT$ in una chiamata alla funzione CreateFile . Un processo può usare la funzione CreateConsoleScreenBuffer per creare buffer dello schermo aggiuntivi per la console. Un nuovo buffer dello schermo non è attivo fino a quando non viene specificato il relativo handle in una chiamata alla funzione SetConsoleActiveScreenBuffer . È tuttavia possibile accedere ai buffer dello schermo per leggere e scrivere se sono attivi o inattivi.
Ogni buffer dello schermo ha una matrice bidimensionale di record di informazioni sui caratteri. I dati per ogni carattere vengono archiviati in una struttura CHAR_INFO che specifica il carattere Unicode o ANSI e i colori di primo piano e di sfondo in cui viene visualizzato il carattere.
È possibile impostare una serie di proprietà associate a un buffer dello schermo in modo indipendente per ogni buffer dello schermo. Ciò significa che la modifica del buffer dello schermo attivo può avere un effetto significativo sull'aspetto della finestra della console. Le proprietà associate a un buffer dello schermo includono:
- Dimensioni del buffer dello schermo, in righe e colonne di caratteri.
- Attributi di testo (colori di primo piano e di sfondo per la visualizzazione del testo da scrivere tramite la funzione WriteFile o WriteConsole ).
- Dimensioni e posizione della finestra (l'area rettangolare del buffer dello schermo della console visualizzato nella finestra della console).
- Posizione, aspetto e visibilità del cursore.
- Modalità di output (ENABLE_PROCESSED_OUTPUT e ENABLE_WRAP_AT_EOL_OUTPUT). Per altre informazioni sulle modalità di output della console, vedere High-Level Modalità console.
Quando viene creato un buffer dello schermo, contiene spazi in ogni posizione. Il cursore è visibile e posizionato in corrispondenza dell'origine del buffer (0,0) e la finestra viene posizionata con l'angolo superiore sinistro dell'origine del buffer. Le dimensioni del buffer dello schermo della console, le dimensioni della finestra, gli attributi di testo e l'aspetto del cursore sono determinate dall'utente o dalle impostazioni predefinite del sistema. Per recuperare i valori correnti delle varie proprietà associate al buffer dello schermo della console, usare le funzioni GetConsoleScreenBufferInfo, GetConsoleCursorInfo e GetConsoleMode .
Le applicazioni che modificano una delle proprietà del buffer dello schermo della console devono creare il proprio buffer dello schermo o salvare lo stato del buffer dello schermo ereditato durante l'avvio e ripristinarlo all'uscita. Questo comportamento cooperativo è necessario per garantire che altre applicazioni che condividono la stessa sessione della console non siano interessate dalle modifiche.
Suggerimento
È consigliabile usare la modalità buffer alternativa in futuro, se possibile, invece di creare un secondo buffer dello schermo a questo scopo. La modalità buffer alternativa offre una maggiore compatibilità tra i dispositivi remoti e con altre piattaforme. Per altre informazioni, vedere la discussione sulle API della console classica e sul terminale virtuale .
Aspetto e posizione del cursore
Il cursore di un buffer dello schermo può essere visibile o nascosto. Quando è visibile, l'aspetto può variare, dal riempimento completo di una cella di caratteri alla visualizzazione come linea orizzontale nella parte inferiore della cella. Per recuperare informazioni sull'aspetto e la visibilità del cursore, usare la funzione GetConsoleCursorInfo . Questa funzione indica se il cursore è visibile e descrive l'aspetto del cursore come percentuale di una cella di caratteri che riempie. Per impostare l'aspetto e la visibilità del cursore, usare la funzione SetConsoleCursorInfo .
I caratteri scritti dalle funzioni di I/O della console di alto livello vengono scritti nella posizione corrente del cursore, avanzando il cursore alla posizione successiva. Per determinare la posizione corrente del cursore nel sistema di coordinate di un buffer dello schermo, usare GetConsoleScreenBufferInfo. È possibile usare SetConsoleCursorPosition per impostare la posizione del cursore e, di conseguenza, controllare la posizione del testo scritto o restituito dalle funzioni di I/O di alto livello. Se si sposta il cursore, il testo nella nuova posizione del cursore viene sovrascritto.
Annotazioni
L'uso delle funzioni di basso livello per trovare la posizione del cursore è sconsigliato. È consigliabile usare sequenze di terminale virtuale per eseguire query su questa posizione, se necessario per i layout avanzati. Altre informazioni sulla preferenza per le sequenze di terminale virtuale sono disponibili nel documento relativo alle funzioni classiche e al terminale virtuale .
La posizione, l'aspetto e la visibilità del cursore vengono impostate in modo indipendente per ogni buffer dello schermo.
Attributi carattere
Gli attributi carattere possono essere suddivisi in due classi: color e DBCS. Nel file di intestazione sono definiti gli WinCon.h attributi seguenti.
| Attributo | Significato |
|---|---|
| FOREGROUND_BLUE | Il colore del testo contiene il blu. |
| FOREGROUND_GREEN | Il colore del testo contiene il verde. |
| FOREGROUND_RED | Il colore del testo contiene il rosso. |
| FOREGROUND_INTENSITY | Il colore del testo è intensificato. |
| BACKGROUND_BLUE | Il colore di sfondo contiene il blu. |
| BACKGROUND_GREEN | Il colore di sfondo contiene il verde. |
| BACKGROUND_RED | Il colore di sfondo contiene il rosso. |
| BACKGROUND_INTENSITY | Il colore di sfondo è intensificato. |
| COMMON_LVB_LEADING_BYTE | Byte iniziale. |
| COMMON_LVB_TRAILING_BYTE | Byte finale. |
| COMMON_LVB_GRID_HORIZONTAL | Orizzontale superiore. |
| COMMON_LVB_GRID_LVERTICAL | Verticale sinistro. |
| COMMON_LVB_GRID_RVERTICAL | Verticale destra. |
| COMMON_LVB_REVERSE_VIDEO | Invertire gli attributi di primo piano e di sfondo. |
| COMMON_LVB_UNDERSCORE | Sottolineare. |
Gli attributi di primo piano specificano il colore del testo. Gli attributi di sfondo specificano il colore utilizzato per riempire lo sfondo della cella. Gli altri attributi vengono usati con DBCS.
Un'applicazione può combinare le costanti di primo piano e di sfondo per ottenere colori diversi. Ad esempio, la combinazione seguente restituisce testo ciano brillante su uno sfondo blu.
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE
Se non viene specificata alcuna costante di sfondo, lo sfondo è nero e, se non viene specificata alcuna costante di primo piano, il testo è nero. Ad esempio, la combinazione seguente produce testo nero su uno sfondo bianco. Per lo sfondo vengono specificati rosso, verde e blu, che si combina con uno sfondo bianco. Non vengono specificati colori flag per il primo piano in modo che sia nero.
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
Ogni cella del buffer dello schermo archivia gli attributi di colore per i colori utilizzati nel disegno del primo piano (testo) e dello sfondo di tale cella. Un'applicazione può impostare i dati di colore per ogni cella di caratteri singolarmente, archiviando i dati nel membro Attributes della struttura CHAR_INFO per ogni cella. Gli attributi di testo correnti di ogni buffer dello schermo vengono usati per i caratteri successivamente scritti o restituiti dalle funzioni di alto livello.
Un'applicazione può usare GetConsoleScreenBufferInfo per determinare gli attributi di testo correnti di un buffer dello schermo e la funzione SetConsoleTextAttribute per impostare gli attributi di carattere. La modifica degli attributi di un buffer dello schermo non influisce sulla visualizzazione dei caratteri scritti in precedenza. Questi attributi di testo non influiscono sui caratteri scritti dalle funzioni di I/O della console di basso livello ,ad esempio la funzione WriteConsoleOutput o WriteConsoleOutputCharacter , che specificano in modo esplicito gli attributi per ogni cella scritta o lasciano invariati gli attributi.
Annotazioni
L'uso delle funzioni di basso livello per modificare gli attributi di testo predefiniti e specifici è sconsigliato. È consigliabile usare sequenze di terminale virtuale per impostare gli attributi di testo. Altre informazioni sulla preferenza per le sequenze di terminale virtuale sono disponibili nel documento relativo alle funzioni classiche e al terminale virtuale .
Attributi carattere
La funzione GetCurrentConsoleFont recupera informazioni sul tipo di carattere della console corrente. Le informazioni archiviate nella struttura CONSOLE_FONT_INFO includono la larghezza e l'altezza di ogni carattere nel tipo di carattere.
La funzione GetConsoleFontSize recupera le dimensioni del tipo di carattere utilizzato dal buffer dello schermo della console specificato.
Annotazioni
L'uso delle funzioni per trovare e modificare le informazioni sui tipi di carattere è sconsigliato. È consigliabile gestire le applicazioni da riga di comando in modo neutro per garantire la compatibilità multipiattaforma e la compatibilità con gli ambienti host che consentono all'utente di personalizzare il tipo di carattere. Per altre informazioni sulle preferenze utente e sugli ambienti host, inclusi i terminali, vedere la roadmap dell'ecosistema.