Форум программистов CodeGuru
20 Октябрь 2018, 08:52:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: RichEdit - выделение текста  (Прочитано 19026 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Гость
Гость
« : 10 Декабрь 2004, 19:49:47 »

Добрый день.
В MSVC создал визардом редактор на базе CRichEditorView.
Ситуация такая: пользователь ввел некий текст, потом нажал на кнопку и
я хочу некоторые из введенных слов подчеркнуть (или поменять цвет).
Функции типа SetCharFormatSelection вроде работают, если есть выделенный текст. А мне нужно, например, подчеркнуть символы с пятого по десятый...
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 10 Декабрь 2004, 22:32:46 »

Ну есть типовое решение - запретить перерисовку контрола, сохранить старое выделение (ведь часть текста уже может быть выделена), установить новое выделение (как надо), сделать с выделенным текстом то что хочется, а потом - восстановить предыдущее выделение и разрешит перерисовку снова.

То есть - примерно так:


Код:
CRichEditCtrl &refEdit = GetRichEditCtrl();

SetRedraw(FALSE);

CHARRANGE sCRPrevSel;

refEdit.GetSel(sCRPrevSel);

refEdit.SetSel(5, 10);


CHARFORMAT cf;

ZeroMemory(&cf, sizeof(cf));

cf.dwMask = CFM_UNDERLINE;
cf.dwEffects = CFE_UNDERLINE;

SetCharFormat(cf);

refEdit.SetSel(sCRPrevSel);

SetRedraw(TRUE);

Invalidate();


Заметьте, что здесь я просто жестко указал диапазон выделения. Также обратите внимание на Invalidate - без него не перерисуется после изменений.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!