Bonjour,

J'affiche du texte dans un contrôle (multi-ligne)

J'ai besoin de pouvoir mettre en gras un(e) ou plusieurs mot(s) (lignes) dans ce contrôle.

Le CEdit ne me le permet pas, je passe donc par un CRichEditCtrl

Pour trouver le mot que je dois mettre en gras, je fais appel à la fonction FindText, et là tout se complique...

Avec ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = -1; // pour chercher dans toute la sélection
ft.lpstrText = _T("MonMot");
 
long n = myRichEditCtrl.FindText(FR_MATCHCASE|FR_WHOLEWORD, &ft);
if (n != -1)
{
	myRichEditCtrl.SetSel(ft.chrgText); // je sélectionne le mot qui vient d'être trouvé
	myRichEditCtrl.SetSelectionCharFormat(cfBold);// je mets ce mot en gras, cfBold est défini plus haut chez moi, ce n'est pas le problème
}
Le mot n'est tout simplement pas trouvé...

Avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
long n = m_EdtDetailsR.FindText(FR_DOWN, &ft);
if (n != -1)
{
	myRichEditCtrl.SetSel(ft.chrgText);
	myRichEditCtrl.SetSelectionCharFormat(cfBold);
}
Il trouve quelque chose, mais, comment dire.... pas du tout ce que je cherche!
Typiquement, j'ai plusieurs lignes d'affichées, et chacune se termine par "OK" ou "KO"... je cherche le mot "KO" dans mon texte, et il me renvoie la position du premier OK...

J'ai cherché un peu sur le net, et il semblerait que cette fonction soit buggée

Est-ce que quelqu'un aurait une idée? soit pour faire fonctionner ce code, soit pour utiliser une autre classe qui me permette de faire ça?

Merci d'avance pour votre aide, et bonne journée!!