@Barattolo con "metto in output" intendo il semplice utilizzo del cout ^^
Ho provato a fare alcune modifiche. Adesso posto alcune righe di codice, le più significative. preparatevi a un post luuuungo XD
Questa è la finestra grafica:
allora, questo è il ciclo principale:
- Codice: Seleziona tutto
//Ciclo finchè voglio inserire il nome
{
GetMouseClick(x,y);
if(Il Clic è all'interno del tastierino)
{
Serie di controlli per controllare in quale "quadratino" del tastierino il clic è caduto.
} //Fin qui vi assicuro che TUTTO torna, ho fatto tutti i vari controlli e funziona.
if (InvioPremuto==0)
{
char app=StampaCarattere(lettera,SelezLettera,UltimoNumero,Lunghezza);
appoggio[Lunghezza]=app;
strcpy(Rubrica[nNomi].Nome,appoggio);
}
else if (InvioPremuto==1)
{
char app=StampaCarattere(lettera,SelezLettera,UltimoNumero,Lunghezza);
appoggio[Lunghezza]=app;
strcpy(Rubrica[nNomi].Cognome,appoggio);
}
else if (InvioPremuto==2)
{
char app=StampaNumero(lettera,Lunghezza);
appoggio[Lunghezza]=app;
strcpy(Rubrica[nNomi].Telefono,appoggio);
}
}
I problemi inziano dai controlli su InvioPremuto. InvioPremuto è un contatore che tiene di conto quante volte l'utente ha cliccato sull'invio

prima del clic, salva le lettere sul nome, dopo un clic sul cognome, poi sul numero.
Al momento in cui ho scritto il post iniziale, la variablie array appoggio[20] e lo strcpy non c'erano. Le ho messe dopo, in seguito vi dirò i risultati.
Qui metto una parte della funzione StampaCarattere, che richiamo sopra:
- Codice: Seleziona tutto
switch(n)
{
case(10):{
if(Ultimo!=n)
Lunghezza++;
switch(SelezLettera[0][1])
{
case(0):{
outtextxy(330+15*Lunghezza,90,"a");
app='a';
break;
}
case(1):{
outtextxy(330+15*Lunghezza,90,"b");
app='b';
break;
}
case(2):{
outtextxy(330+15*Lunghezza,90,"c");
app='c';
break;
}
}
if(SelezLettera[0][1]!=2)
SelezLettera[0][1]++;
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
if(i!=0||j!=1)
SelezLettera[i][j]=0;
Ultimo=n;
cout<<app<<" "<<Lunghezza<<endl;
return app;
break;
}
.
.
.
}
Eccolo qua. Ho messo solo il caso 10, che equivale al secondo tasto, per le lettere 'a', 'b', 'c'.
Passo alla spiegazione:
La variabile Ultimo ritorna tutte le volte modificata alla funzione aggiungi (c'è la '&'): il suo compito è memorizzare l'ultimo carattere su cui l'utente ha cliccato, così da comportarsi di conseguenza (se Ultimo==n, significa che l'utente vuole scrivere, ad esempio, almeno una 'b'. Quindi viene cancellata la 'a' e scritta una 'b'. Altrimenti, la lunghezza viene aumentata, perchè all'utente la 'a' piace lì dov'è).
Il vettore SelezLettera mi serve per memorizzare quante volte di seguito l'utente ha cliccato sullo stesso tasto consecutivamente. Se è a 0, significa che l'utente non ha cliccato questo numero nel suo clic precedente, quindi da la prima lettera, poi dopo lo vediamo aumentare così che l'utente se clicca di uovo sul tasto della 'a', la vedrà sostituita con una 'b'. Quindi, viene resettato tutto SelezLettera per ovvii motivi e, come descritto sopra, aumetata la componente appena utilizzata. Una soluzione che poteva essere ridotta in qualcosa di meno, ma che ho trovato abbastanza pratica per la mia logica.
Quindi, Ultimo diventa uguale a n, per la funzione che ho spiegato sopra.
Quel cout mi è servito per alcuni controlli su Lunghezza (che mi aiuta a decidere dove deve essere posizionata la lettera che ho selezionato, sia a livello grafico che a livello di sistema.
Alla fine la variabile app, che conteneva il carattere risultante di tutte 'sti affaracci ritorna alla funzione di prima, che si andrebbe a salvare prima in appoggio[], infine nel mio struct.
L'output prodotto, se io scrivo 'Nome', 'Cognome', '1234567890', è il seguente:
88me? ~cog88me? ~1234567890
Inserisco anche il link al download del file eseguibile:
http://www.2shared.com/file/6089854/714 ... etto1.html
PS: Ha un funzionamento abbastanza limitato: se volete scrivere, per esempio, 'abaco', dovete cliccare, in sequenza:
tasto 2 per inserire una 'a'
il tasto in basso a destra per aumentare lunghezza
tasto 2 per inserire una 'a'
tasto 2 per inserire una 'b'
di nuovo il tasto in basso a destra
tasto 2 per inserire una 'a'
ancora il tasto in basso a destra
tasto 2 per inserire una 'c'
3 volte il tasto 6 per mettere la 'o'.