Newsgroup: it.comp.programmare.win32
Titolo: Scrivere in una CEdit

Ho creato una CEdit(multiline e read only) ed ho associato una variabile
CString.
Lo scopo è quello di creare un Log (Tipo Accesso Remoto) che tenga tracce
delle varie fasi del mio algoritmo.
Purtroppo non riesco a capire come usare in modo corretto la CEdit, dato che
non riesco ad ottenere "il fine riga" cioè se introduco il carattere "\n"
ottengo una barretta nera e senza l'andata a capo del testo.
Per aggiungere nuovo testo alla CString non faccio altro che utilizzare
l'operatore +="nuova stringa\n", seguito dalla funzione UpDateData(false).
Grazie per l'aiuto   Matteo

l'operatore +="nuova stringa\n", seguito dalla funzione UpDateData(false).
Prova con "\r\n"
Luc.

Prova con "\r\n"
ho anche io un problema con la CEdit in questo momento..
se voglio aggiungere qualcosa nella CEdit..
se debbo inserire una riga in + in una CEdit multiline
in sola lettura per l'utente (anche io sto creando un log ..
però per un'altro fine :)) io mi sono creato una funzioncina del
genere..
void CBaseWnd::AddTextToLog(CString strText)
{
	int strLen=myEdit.GetWindowTextLength();
	char *strChr=new char[strLen+5];
	CString oldText;
 
	myEdit.GetWindowText(strChr, strLen);
	if (strLen != 0)
	{
		oldText=strChr;
		oldText+="\r\n";
		oldText+=strText;
	} else oldText=strText;
	myEdit.SetWindowText((LPCTSTR)oldText);
 
	delete strChr;
}
ma a me non piace ... esiste una qualche funzione +
immediata??
grazie
cod

genere..
Anche io l'ho fatto. Comunque prova cosi...
CString txt="nuova riga\r\n";
nLen = GetWindowTextLength();
SetSel(nLen,nLen);
ReplaceSel(txt);
Luc.

Grazie, hai risolto il mio problema.
Sai anche come fare a far avanzare la barra verticale ?
Con la funzione LineScroll(1,0) non riesco durante l'elaborazione del mio
programma (almeno fino a quando non finisce).
                        Grazie ancora Matteo
"Luc" <TOGL...@katamail.com-TOGLI> ha scritto nel messaggio
news:9lmoktgcs5cfv8v0q...@4ax.com...


 ha scritto nel messaggio
news:5j6pkt0868vv0ntka...@4ax.com...


programma (almeno fino a quando non finisce).
Prova questo:
LineScroll(65535);
Luc.

Purtroppo non funziona.
Grazie lo stesso   Matteo
"Luc" <TOGL...@katamail.com-TOGLI> ha scritto nel messaggio
news:allqkt0vfc1acdt7i...@4ax.com...


Purtroppo non funziona.
Allora hai un altro problema... quello era un cut da un vecchio codice
funzionante... hai settato bene i parametri di scroll del dialog?
Luc.

I parametri della CEdit sono:
-Multiline
-Vertical scroll
-Autoscroll
-Read Only
Ho associato alla CEdit le variabili:
CEdit m_CntLog
CString Log
mentre la funziona che chiamo è:
void CKLDlg::AddLog(CString Log, int mode) {
 ASSERT (mode==0 || mode==1); // mode 0 -> add Log, mode 1 -> m_Log = Log
 Log+="\r\n";
 if (mode) {
  m_Log=Log;
 }
 else {
  m_Log+=Log;
  m_CntLog.LineScroll(65535);
 }
 UpdateData(false);
 UpdateWindow();
}
Tutto questo ovviamente mentre faccio girare la funzione principale (Vari
minuti)
                            Matteo
"Luc" <TOGL...@katamail.com-TOGLI> ha scritto nel messaggio
news:ijqqktkkamslelha2...@4ax.com...


}
Beh, ad occhio (e a logica) io scrollerei DOPO aver updatato il
messaggio...
Luc.


Avevi ragione ho modificato nel modo seguente la funzione:
void CKLDlg::AddLog(CString Log, int mode) {
 ASSERT (mode==0 || mode==1); // mode 0 -> add Log, mode 1 -> m_Log = Log
 Log+="\r\n";
 if (mode) {
  m_Log=Log;
  UpdateData(false);
 }
 else {
  m_Log+=Log;
  UpdateData(false);
  m_CntLog.LineScroll(10000);
 }
 UpdateWindow();
}
Perņ ho dovuto modificare   m_CntLog.LineScroll(65535) in
m_CntLog.LineScroll(10000), altrimenti non funzionava. Probabilmente 65535
era fuori range per lo scroll. Su msdn non ho trovato nulla in merito.
Grazie Mille per il tuo aiuto       Matteo