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:
Le mot n'est tout simplement pas trouvé...
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 }
Avec le code suivant :
Il trouve quelque chose, mais, comment dire.... pas du tout ce que je cherche!
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); }
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!!
Partager