Изменение цвета в Richedit Windowless операции

Я пытаюсь добиться чего-то похожего на выделение домена. Я хочу, чтобы часть моего текста в расширенном окне редактирования была другого цвета, как у нас в функции выделения доменов в IE.

Проблема: я знаю, что мы должны сначала использовать EM_EXSETSEL выбрать нужный текст, а затем применить EM_SETCHARFORMAT,

EM_EXSETSEL выполнить необходимую операцию, и нужный текст будет выбран правильно. Тем не менее, когда я выполняю EM_SETCHARFORMAT в выбранном тексте не происходит никаких изменений.

Окно создается с использованием RICHEDIT_CLASS .

Любая помощь будет оценена.

1 ответ

Как насчет чего-то вроде этого (чтобы выделить жирный красный текст на текущем выделении):

   // Set up the CHARFORMAT structure
   CHARFORMAT cfm;
   cfm.cbSize = sizeof(cfm);    // Don't forget this!

   // Get char format
   ::SendMessage(hWnd, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cfm);

   // Set the new effects
   cfm.dwEffects   = CFE_BOLD;
   cfm.crTextColor = RGB(255,0,0);
   cfm.dwMask      = CFM_BOLD | CFM_COLOR;

   // Set the new format
   ::SendMessage(hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cfm);

где hWnd - дескриптор окна элемента управления Rich Edit.

Если нет... тогда опубликуйте некоторый код, чтобы мы могли видеть, где вы можете пойти не так...

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