Изменение цвета в Rich Edit Control
Когда вы стираете цветной текст. По умолчанию элемент управления устанавливает новый введенный цвет текста обратно на недавно удаленный. как вы можете избежать этого? Вам нужно проверить каждый стиль символов, прежде чем печатать?
ОБНОВИТЬ:
Я пытаюсь установить цвет текста следующим образом.
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
1 ответ
Решение
Ваш вопрос довольно неясен. Дикий удар в этом: вы теряете все форматирование при назначении свойства Text. Обязательно используйте AppendText() вместо этого. И установить свойства SelectionColor и SelectionBackColor обратно к тому, что было после окрашивания любого текста, чтобы вновь введенный текст получил предпочтительные цвета по умолчанию.