[MFC] - FindText dans un CRichEditCtrl
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:
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:
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... :arf:
J'ai cherché un peu sur le net, et il semblerait que cette fonction soit buggée :furieux:
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!!