2010-02-17 8 views
0

lorsque vous effacez un texte coloré. Par défaut, le contrôle définit la nouvelle couleur de texte saisie sur celle qui a été récemment effacée. comment pouvez-vous éviter cela? avez-vous besoin de vérifier chaque style de caractère avant de taper?Modifier la couleur dans Rich Edit Control

MISE À JOUR:

J'essaie de définir la couleur du texte comme celui-ci.

SendMessage(hEdit, EM_SETSEL, start_pos, end_pos); //select text for coloring 

     CHARFORMAT cf; 
     memset(&cf, 0, sizeof cf); 
     cf.cbSize = sizeof cf; 
     cf.dwMask = CFM_COLOR; 
     cf.crTextColor = RGB(255,0,0); 
     SendMessage(hEdit , EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf); 

     SendMessage(hEdit, EM_SETSEL, -1, 0); //deselect text 
     cf.crTextColor = RGB(0,0,0); //reset colour 
     SendMessage(hEdit , EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf); //set colour 

Répondre

1

Votre question n'est pas très claire. Stab sauvage: vous perdez toute la mise en forme lorsque vous affectez la propriété Text. Veillez à utiliser AppendText() à la place. Et pour définir les propriétés SelectionColor et SelectionBackColor à ce qu'il était après avoir colorisé n'importe quel texte afin que le texte nouvellement entré obtient les couleurs par défaut préférées.

+0

Je rétablis la couleur par défaut (noir) après avoir changé la couleur (disons rouge). mais à l'exécution, lorsque j'essaie d'effacer ce texte (rouge) dans le fichier richedit, les propriétés de couleur du texte par défaut sont également changées (en rouge). – cpx

+0

Oui, c'est pourquoi j'ai recommandé de restaurer les propriétés SelectionColor/BackColor. –

+0

mais je ne sais pas quand restaurer, envoie-t-il comme un message de notification à son parent que la propriété de couleur a changé? – cpx

Questions connexes