Modalità console di alto livello
Il comportamento delle funzioni della console di alto livello è influenzato dalle modalità di input e output della console. Tutte le modalità di input della console seguenti sono abilitate per il buffer di input di una console quando viene creata una console:
- Modalità di input riga
- Modalità di input elaborata
- Modalità di input Echo
Entrambe le modalità di output della console seguenti sono abilitate per un buffer dello schermo della console al momento della creazione:
- Modalità di output elaborata
- Wrapping in modalità di output EOL
Tutte e tre le modalità di input, insieme alla modalità di output elaborata, sono progettate per lavorare insieme. È consigliabile abilitare o disabilitare tutte queste modalità come gruppo. Quando tutti sono abilitati, l'applicazione viene considerata in modalità "cucinata", il che significa che la maggior parte dell'elaborazione viene gestita per l'applicazione. Quando tutti sono disabilitati, l'applicazione è in modalità "non elaborata", il che significa che l'input non è filtrato e qualsiasi elaborazione viene lasciata all'applicazione.
Un'applicazione può usare la funzione GetConsoleMode per determinare la modalità corrente del buffer di input o del buffer dello schermo di una console. È possibile abilitare o disabilitare una di queste modalità usando i valori seguenti nella funzione SetConsoleMode. Si noti che l'impostazione della modalità di output di un buffer dello schermo non influisce sulla modalità di output di altri buffer dello schermo.
Se il parametro hConsoleHandle è un handle di input, la modalità può essere costituita da uno o più dei valori seguenti. Quando viene creata una console, tutte le modalità di input tranne ENABLE_WINDOW_INPUT e ENABLE_VIRTUAL_TERMINAL_INPUT sono abilitate per impostazione predefinita.
valore | Significato |
---|---|
ENABLE_ECHO_INPUT 0x0004 | I caratteri letti dalla funzione ReadFile o ReadConsole vengono scritti nel buffer dello schermo attivo durante la digitazione nella console. Questa modalità può essere utilizzata solo se è abilitata anche la modalità ENABLE_LINE_INPUT. |
ENABLE_INSERT_MODE 0x0020 | Quando è abilitata, il testo immesso in una finestra della console verrà inserito nella posizione corrente del cursore e tutto il testo successivo a tale posizione non verrà sovrascritto. Quando è disabilitata, tutto il testo seguente verrà sovrascritto. |
ENABLE_LINE_INPUT 0x0002 | La funzione ReadFile o ReadConsole restituisce un valore solo quando viene letto un carattere di ritorno a capo. Se questa modalità è disabilitata, le funzioni restituiscono un valore quando sono disponibili uno o più caratteri. |
ENABLE_MOUSE_INPUT 0x0010 | Se il puntatore del mouse si trova all'interno dei bordi della finestra della console e la finestra ha lo stato attivo della tastiera, gli eventi del mouse generati dal movimento del mouse e dalle pressioni dei tasti vengono inseriti nel buffer di input. Questi eventi vengono scartati da ReadFile o ReadConsole, anche quando questa modalità è abilitata. La funzione ReadConsoleInput può essere usata per leggere MOU edizione Standard_EVENT record di input dal buffer di input. |
ENABLE_PROCESSED_INPUT 0x0001 | CTRL+C viene elaborato dal sistema e non viene inserito nel buffer di input. Se il buffer di input viene letto da ReadFile o ReadConsole, altre chiavi di controllo vengono elaborate dal sistema e non vengono restituite nel buffer ReadFile o ReadConsole. Se è abilitata anche la modalità ENABLE_LINE_INPUT, i caratteri backspace, ritorno a capo e avanzamento riga vengono gestiti dal sistema. |
ENABLE_QUICK_EDIT_MODE 0x0040 | Questo flag consente all'utente di usare il mouse per selezionare e modificare il testo. Per abilitare questa modalità, usare ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS . Per disabilitare questa modalità, usare ENABLE_EXTENDED_FLAGS senza questo flag. |
ENABLE_WINDOW_INPUT 0x0008 | Le interazioni utente che modificano le dimensioni del buffer dello schermo della console vengono segnalate nel buffer di input della console. Le informazioni su questi eventi possono essere lette dal buffer di input dalle applicazioni che usano la funzione ReadConsoleInput, ma non da quelle che usano ReadFile o ReadConsole. |
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 | L'impostazione di questo flag indica al motore di elaborazione del terminale virtuale di convertire l'input utente ricevuto dalla finestra della console in sequenze di terminale virtuale della console che possono essere recuperate da un'applicazione di supporto tramite le funzioni ReadFile o ReadConsole. In genere è previsto l'uso congiunto di questo flag con ENABLE_VIRTUAL_TERMINAL_PROCESSING nell'handle di output per la connessione a un'applicazione che comunica esclusivamente tramite sequenze del terminale virtuale. |
Se il parametro hConsoleHandle è un handle del buffer dello schermo, la modalità può essere costituita da uno o più dei valori seguenti. Per impostazione predefinita, entrambe le modalità sono abilitate al momento della creazione di un buffer dello schermo.
valore | Significato |
---|---|
ENABLE_PROCESSED_OUTPUT 0x0001 | I caratteri scritti dalla funzione WriteFile o WriteConsole o ripetuti dalla funzione ReadFile o ReadConsole vengono analizzati per individuare sequenze di controllo ASCII e viene eseguita l'azione corretta. Vengono elaborati i caratteri backspace, tabulazione, segnale acustico di avviso, ritorno a capo e avanzamento riga. Deve essere abilitata quando si usano sequenze di controllo o quando è impostata ENABLE_VIRTUAL_TERMINAL_PROCESSING . |
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 | Durante la scrittura con WriteFile o WriteConsole o la ripetizione con ReadFile o ReadConsole, il cursore si sposta all'inizio della riga successiva quando raggiunge la fine della riga corrente. In questo modo, le righe visualizzate nella finestra della console scorrono automaticamente verso l'alto quando il cursore supera l'ultima riga nella finestra. Inoltre, il contenuto del buffer dello schermo della console scorre verso l'alto (../ignorando la riga superiore) quando il cursore supera l'ultima riga nel buffer dello schermo della console. Se questa modalità è disabilitata, l'ultimo carattere della riga viene sovrascritto con i caratteri successivi. |
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 | Quando si scrive con WriteFile o WriteConsole, i caratteri vengono analizzati per individuare VT100 e sequenze di caratteri di controllo simili che controllano lo spostamento del cursore, la modalità colore/carattere e altre operazioni che possono essere eseguite anche tramite le API della console esistenti. Per altre informazioni, vedere Sequenze del terminale virtuale della console. Assicurarsi che ENABLE_PROCESedizione StandardD_OUTPUT sia impostato quando si usa questo flag. |
DISABLE_NEWLINE_AUTO_RETURN 0x0008 | Quando si scrive con WriteFile o WriteConsole, viene aggiunto uno stato supplementare al wrapping di fine riga che può ritardare le operazioni di spostamento del cursore e scorrimento del buffer. In genere, quando si imposta ENABLE_WRAP_AT_EOL_OUTPUT e il testo raggiunge la fine della riga, il cursore si sposta immediatamente nella riga successiva e il contenuto del buffer scorre verso l'alto di una riga. A differenza di questo flag impostato, il cursore non passa alla riga successiva e l'operazione di scorrimento non viene eseguita. Il carattere scritto verrà stampato nella posizione finale sulla riga e il cursore rimarrà al di sopra di questo carattere come se ENABLE_WRAP_AT_EOL_OUTPUT fosse disattivato, ma il successivo carattere stampabile verrà stampato come se ENABLE_WRAP_AT_EOL_OUTPUT fosse attivo. Non si verificherà alcuna sovrascrittura. In particolare, il cursore avanza rapidamente fino alla riga successiva, viene eseguito uno scorrimento, se necessario, il carattere viene stampato e il cursore avanza di una posizione. In genere è previsto l'uso congiunto di questo flag con l'impostazione ENABLE_VIRTUAL_TERMINAL_PROCESSING per emulare meglio un emulatore di terminale quando la scrittura del carattere finale sullo schermo (../nell'angolo in basso a destra) senza attivare uno scorrimento immediato è il comportamento desiderato. |
ENABLE_LVB_GRID_WORLDWIDE 0x0010 | Le API per la scrittura di attributi di tipo carattere, tra cui WriteConsoleOutput e WriteConsoleOutputAttribute, consentono di usare flag dagli attributi di tipo carattere per modificare il colore in primo piano o di sfondo del testo. Inoltre, è stato specificato un intervallo di flag DBCS con il prefisso COMMON_LVB. In passato, questi flag funzionavano solo nelle tabelle codici DBCS per il cinese, il giapponese e il coreano. Con l'eccezione dei flag di byte iniziali e finali, i flag rimanenti che descrivono il disegno di linee e l'inversione video (../inversione dei colori di primo piano e sfondo) possono essere utili per altre lingue per enfatizzare porzioni di output. L'impostazione di questo flag della modalità della console consentirà di usare questi attributi in qualsiasi tabella codici in qualsiasi lingua. È disattivato per impostazione predefinita per garantire la compatibilità con le applicazioni che hanno sempre utilizzato la console ignorando questi flag nei computer non CJK per archiviare bit in questi campi per scopi specifici o per errore. Si noti che l'uso della modalità ENABLE_VIRTUAL_TERMINAL_PROCESSING può determinare l'impostazione dei flag di griglia LVB e inversione video mentre questo flag è ancora disattivato se l'applicazione collegata richiede la sottolineatura o l'inversione video tramite sequenze del terminale virtuale della console. |