Bonjour.

J'aimerais ajouter des lignes de messages à mon RichEdit et ce en choissisant la couleur pour chaque message. De plus, j'aimerais que la ScrollBar s'ajuste au contenu. Donc si j'ai 200 lignes, qu'elle se scroll (update) toute seul jusqu'à la dernière ligne. Voilà le code que j'ai présentement conçu jusqu'ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
void SendMessageToViewer(const CString & msg, const COLORREF & crNewColor)
{
	long iTotalTextLength = m_Rec_Viewer.GetTextLength();
	m_Rec_Viewer.SetSel( -1, -1);
	m_Rec_Viewer.ReplaceSel( msg );
	long iStartPos = iTotalTextLength;
 
	CHARFORMAT cf;
	cf.cbSize = sizeof(CHARFORMAT);
	cf.dwMask = CFM_COLOR | CFM_UNDERLINE | CFM_BOLD;
	cf.dwEffects = (unsigned long)~( CFE_AUTOCOLOR | CFE_UNDERLINE | CFE_BOLD);
	cf.crTextColor = crNewColor;
 
	long iEndPos = m_Rec_Viewer.GetTextLength();
	m_Rec_Viewer.SetSel(iStartPos, iEndPos);
	m_Rec_Viewer.SetSelectionCharFormat(cf);
	m_Rec_Viewer.HideSelection(TRUE, FALSE);
   m_Rec_Viewer.LineScroll( this->m_SequencerDialog->m_Rec_Viewer.GetLineCount() - 1 );
	m_Rec_Viewer.UpdateWindow();
}
Cela fonctionne mais pas tout à fait correctement. La première ligne tout va bien mais à la 2ième, 3ième, 4ième, etc... La couleur est mal affectée à la ligne, parfois les 2-3 premiers caractères possèdent l'ancienne couleur de la phrase précédante.

Merci pour votre aide.