Изменение цвета в 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 обратно к тому, что было после окрашивания любого текста, чтобы вновь введенный текст получил предпочтительные цвета по умолчанию.

Другие вопросы по тегам