Ciao,
sono un novellino nella programmazione in VC++ ( giusto un paio di giorni, per cui perdonatemi per la banalita' del quesito che vi sto' per proporre ( sara' anche banale, ma non riesco a risolverlo...).
Dunque, ho creato una semplicissima DialogBox contenente solo 4 EditBox.
Cio' che vorrei fare e' poter inserire una stringa nella prima EditBox e, terminato l' inserimento ( premendo il tasto return) vorrei che il cursore passasse all' ultima EditBox.
Come si puo' fare ?( senza sfruttare i caratteri di tabulazione...)
Vi dico cio' che ho fatto io senza pero' un buon esito:
Ho cercato di risolvere il problema con la funzione membro SetFocus().
Ecco come :
Ho fatto il subclasing dei controlli di modifica.
In pratica, ho creato una nuova classe ( Initialize, classe derivata da CEdit).
Tale classe contiene una funzione membro:
void primo::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
Lo scopo di tale funzione e' quella di testare il carattere inviato dalla tastiera e, nel caso in cui venisse premuto il tasto return
(VK_RETURN) sostituirlo con un carattere NULL, poi processarlo con la funzione DefWindowProc(....)
Fatto cio' eliminato quindi il carattere return, la funzione prosegue con l' istruzione SetFocus().
ecco come ho interpretato l' istruzione di SetFocus()
(Ho ovviamente creato una variabile di controllo di tipo CInitialize collegata all' HANDLE dell' EditrBox in questione)Codice PHP:
MessageBox( "Sposto il cursore in un altra EditBox ( forse..)");
CWnd * pText1;
pText1 = GetDlgItem(IDC_EDIT_TEXT2);
pText1->SetFocus();
Il programma giunto in prossimita' della funzione SetFocus() si blocca ed appare la finestra d' errore di Windows ( Il programma ha eseguito un operazione non valida ecc..).
Se invece creo una funzione OnSetfocusEditText2() membro della classe principale del progetto ( dlg) e riporto le istruzioni soprocitate, SetFocus() funziona correttamente.
Come mai ?
Mi rendo conto di non essere stato molto chiaro, ( anche perche' ho una grande confusione in testa), ma se qualcuno ha capito qualcosa e mi vuol rispondere, o solo se sa come cambiare il focus da un EditBox all' altra premendo il tasto return, fatemi sapere...
Buona nottata a tutti
Sergio