Как отобразить красные волнистые линии в CRichEditCtrl в MFC

Я работаю над реализацией проверки орфографии в приложении MFC. Что я хочу сделать, это отображать красные линии под неправильно написанными словами.

Я нашел один пример, где это сделано, но он работает только для простого поля редактирования, потому что он может просто использовать шрифт редактирования элементов управления по умолчанию для выполнения расчетов для рисования волнистых линий. Но это не работает для элемента управления rich edit, так как в элементе управления rich edit возможно, что разные слова могут иметь разные шрифты. В этом случае пример, который я нашел, рисует линии в неправильных местах.

Пожалуйста, дайте мне знать, если кто-то уже сделал это для CRichEditCtrl? (он должен обрабатывать текст любого шрифта / размера, который присутствует в элементе управления rich edit.)

Спасибо, Сачин

2 ответа

CHARFORMAT2 format;
SecureZeroMemory(&format, sizeof(CHARFORMAT2));
format.cbSize = sizeof(CHARFORMAT2);
format.dwMask = CFM_UNDERLINE|CFM_UNDERLINETYPE;
format.dwEffects = CFE_UNDERLINE;
format.bUnderlineType = CFU_UNDERLINEWAVE | 0x50;
SendMessage(EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&format);

Я надеюсь, что это подчеркнет ваш текст

Используйте сообщение EM_SETCHARFORMAT:

CHARFORMAT2 format;
SecureZeroMemory(&format, sizeof(CHARFORMAT2));
format.cbSize = sizeof(CHARFORMAT2);
format.dwMask = CFM_UNDERLINE|CFM_UNDERLINETYPE;
format.dwEffects = CFE_UNDERLINE;
format.bUnderlineType = CFU_UNDERLINE
window->SendMessage(EM_EXSETSEL, NULL, (LPARAM)&range);
window->SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&format);
Другие вопросы по тегам