Come sono state create le GUI, ma nelle applicazioni della console?GUI applicazione console
Ci sono molti esempi, come alsamixer:
Come sono state create le GUI, ma nelle applicazioni della console?GUI applicazione console
Ci sono molti esempi, come alsamixer:
Le librerie come le Maledizioni funzionano allo stesso modo in cui i gestori di finestre eseguono ambienti grafici. Controlli come finestre, pulsanti, caselle di controllo sono tutti definiti dalla libreria.
Invece di WriteLining sullo schermo, si scrive testo in una finestra o si imposta il testo di un controllo. La libreria tiene traccia di finestre, sovrapposizioni, effetti bordo, ombre esterne, comportamento di trascinamento (se il mouse è supportato). Costruisce un buffer di caratteri di caratteri, in primo piano e colori di sfondo.
L'esempio goto (x, y) pubblicato funzionerebbe, ma se l'implementazione lo avesse fatto per ciascun carattere, le prestazioni sarebbero rimaste notevolmente in ritardo. Per ottenere la velocità, quando modifichi un testo o altre proprietà, la libreria conosce le regioni rettangolari che devono essere aggiornate dal buffer dei caratteri e scrive i nuovi dati carattere per quella regione sullo schermo in un blocco con chiamate ottimizzate ai driver video.
A differenza delle app di console di base che fanno semplicemente eco a tutti i caratteri stampabili sullo schermo, l'input da tastiera in queste applicazioni avanzate viene intercettato e tali caratteri sono scritti in modo più esplicito (o non scritti in, nel caso dei tasti di scelta rapida della tua app) finestra giusta o qualsiasi altra cosa.
Vorrei che .Net avesse un'intera libreria di finestre di console integrata. ... [Sigh] Penso che quelle vecchie app in stile console sembrino piuttosto dolci.
La maggior parte delle piattaforme console hanno funzioni come goto (x, y) per posizionare un cursore da qualche parte sullo schermo.
Questo può essere utilizzato per "dipingere" lo schermo con qualsiasi carattere/colore ASCII che si desidera.
La libreria Curses può essere utilizzata per creare tali interfacce utente. Ecco uno introduction per NCurses - l'implementazione delle maledizioni più conosciute.
Termbox è un'alternativa interessante a ncurses, che potrebbe interessarti anche a te.
Su DOS c'erano molte diverse API 'GUI' disponibili prima dell'arrivo di Windows, che fondamentalmente nascondevano le chiamate VGA che erano necessarie per eseguire se si voleva codificare direttamente. Ho lavorato personalmente con TurboPascal e Foxpro inclusi. C'era anche, in breve, un Visual Basic per DOS che includeva un'API simile. Oltre all'output di testo, queste API spesso includono funzionalità quali menu a discesa, disegno di caselle semplici e ombreggiatura. Alcuni di quelli più complessi potrebbero anche avere "Windows" basato sui caratteri che potresti trascinare sullo schermo con il cursore.
VGA potrebbe essere letta sia in testo (molto simile a un terminale mainframe in cui è efficace solo in uscita di un carattere alla riga/colonna) o in modalità grafica, che era molto più simile a GDI (anche se si doveva fare tutto da soli , era lento, e usato raramente per qualsiasi cosa eccetto i primi programmi di pittura e cad). Il tuo esempio è in modalità testo.
Su Unix, dove tali considerazioni sono molto più attuali, lo standard è utilizzare Curses, che è un'API in modalità testo simile che nasconde le caratteristiche del terminale sottostante.
Sono d'accordo. Sono fantastici. :) –