Newsgroup: it.comp.lang.c++
Titolo: "Interfaccia Console Application" datemi una mano!!!

Eistono nel C++ delle classi per rendere migliore l'interfaccia di un
progetto "Console Appication"? che so per esempio nel Pascal c'era la
"Graph", ma sarebbe già qualcosa avere, sempre facendo riferimento al
pascal, qualcosa come la "Crt", perlomeno c'era il GotoXY!!! vi prego datemi
una mano perchè questo progetto mi serve per dare un'esame e purtroppo per
fare un'interfaccia grafica come si deve col Visual C++ e le MFC è troppo
tardi, e chissà poi se lo saprei fare!!!


Il C++ standard non prevede niente del genere. Devi cercarti una
libreria che faccia al caso tuo, oppure un compilatore che semplifichi
la realizzazione di interfacce (ad es. Borland C++Builder).
Ti conviene chiedere su un newsgroup specifico per la piattaforma su cui
lavori.
Ciao,
Nicola

 wrote in message
news:3B1E1980...@divalsim.it...

On a related topic, come direbbero in inglese.
Il supporto alla grafica propriamente detta e' certamente platform dependent
senza via di scampo. Ma, almeno teoricamente, qualche cosa si potrebbe fare
anche in maniera platform independent per migliorare la formattazione
dell'output testuale ... usando i codici ANSI. Non parlo dei caratteri ASCII
estesi tanto usati ai tempi delle BBS, questo e' un discorso diverso. Parlo di
riuscire a formattare il testo in uscita senza essere legati alla sequenzialità
dell'output (e magari introducendo il colore!). Il vero problema sarebbe
trovare:
1) un reference ai suddetti codici (e' dai tempi di FidoNet che non so dove sia
finito il mio).
2) info su come abilitare un environment ANSI sulle piattaforme principali
(direi minimo Linux, NT/W2K e W9x, con eventuale extra su altri *X e su Mac).
E il tutto potrebbe poi andare in FAQ, perche' anche se le nuove generazioni non
sanno nulla di ANSI, resta comunque un metodo "standard" (e portabile), pur se
"character oriented", e risponde, anche se parzialmente, alla frequente domanda
"come faccio per migliorare l'output a console" e varianti della stessa.
Any clue anybody?
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

dell'output testuale ... usando i codici ANSI. 
è vero che in questo caso sarebbe portabile, ma sarebbe anche da
pazzi: ci sono già le librerie che si occupano di questo (ncurses).
Basterebbe incapsulare il tutto in un modulo platform dependent, e
tutto è più veloce e (quasi) portabile.
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

In poche parole quindi se voglio sfruttare al massimo un interfaccia console
con W9x e Visual C++ non esistono librerie già pronte.
Comunque a parte questo vorrei sapere un'altra cosa, sono io che che non ci
capisco nulla di MFC o è davvero incasinato collegare un'interfaccia grafica
ad un progetto console application già terminato?
Insomma esiste più o meno un metodo per collegare i due lavori, devono
essere implementati contemporaneamente o cos'altro ancora?
"Andrea Ferro" <And...@UrkaDVD.it> ha scritto nel messaggio
news:9flqnd$lq0$1...@serv1.iunet.it...


 essere implementati contemporaneamente o cos'altro ancora?
Se il progetto e' completato in maniera console, nella stragrande maggiornaza
dei casi non riesci a crearci sopra una interfaccia grafica. Il motivo e' che i
due paradigmi di I/O sono opposti. In modalità console in genere tu elabori,
presenti dei dati o delle richieste e poi accetti un input che elabori ... e il
ciclo si ripete. Ovvero tu hai il controllo e fai chiamate verso l'"interfaccia
utente". Nel paradigma MFC (ed in generale per le GUI) la cosa avviene al
contrario. L'interfaccia utente ha il controllo e chiama te per ottenere dei
servizi di elaborazione.
Esempio: somma di due numeri.
In modalità console avrai uno schema del tipo:
1) inizializzazioni
2) visualizza prompt dato 1
3) leggi dato 1
4) visualizza prompt dato 2
5) leggi dato 2
6) calcola risultato
7) visualizza risultato
8) visualizza prompt uscita
9) leggi scelta
10) if not fine cicla a passo 1
11) deinizializzazioni
In modalità GUI il corpo del programma (marcato con 0 qui sotto) non lo scrivi
tu. Tu disegni l'interfaccia e scrivi il codice relativo all'esecuzioni dei
comandi (marcato con le lettere qui sotto):
0) Parte nascosta eseguita dal sistema
01) inizializzazione sistema
02) attendi input
03) esegui input
04) se fine input esci else cicla a passo 2
A) Tipo Input: inizio
A1) eventuali inizializzazioni
A2) fine elaborazione input
B) Tipo Input: visualizza interfaccia
B1) visualizza le parti dell'interfaccia che non sono aggiornate
B2) fine elaborazione input
C) Tipo Input: modifica a dato 1
C1) modifica il dato 1
C2) segnala interfaccia come non aggiornata
C3) fine elaborazione input
D) Tipo Input: modifica a dato 2
D1) modifica il dato 2
D2) segnala interfaccia come non aggiornata
D3) fine elaborazione input
E) Tipo Input: elabora somma
E1) calcola risultato
E2) segnala interfaccia come non aggiornata
E3) fine elaborazione input
F) Tipo Input: fine
F1) eventuali deinizializzazioni
F2) fine elaborazione input
Come vedi il paradigma di I/O e' completamente diverso e non e' semplice rendere
GUI un progetto che non lo e'. Comunque, in realta', esistono tecniche per
farlo. Valide soprattutto se la parte "console" e' molto molto grossa e non vale
la pena riscriverla (o se non e' possibile per qualche motivo).


OK ora mi è chiaro che è meglio lasciar perdere.
Inoltre il mio progetto era una gerarchia di una decina di classi e quando
provavo a metterci su un'interfaccia grafica la visibilità delle mie classi
e delle sue funzioni andava a farsi benedire!!! cavolo cambiare tutto però è
quasi come riscrivere tutto da capo.
Comunque grazie a tutti per le spiegazioni.
"Andrea Ferro" <And...@UrkaDVD.it> ha scritto nel messaggio
news:9fp033$4st$1...@serv1.iunet.it...
