Я добавил ссылку на RichEdit, использую структуру CFM_LINK / CHARFORMAT2. Но я не могу понять, как убрать эффект подчеркивания. Я старался:
SendMessage(richEditHWND, EM_AUTOURLDETECT, FALSE, NULL);
SendMessage(richEditHWND, EM_SETEDITSTYLEEX, 0, SES_EX_HANDLEFRIENDLYURL);
CHARFORMAT2 cf2;
memset(&cf2, 0, sizeof(CHARFORMAT2));
cf2.dwMask = CFM_LINK| CFM_UNDERLINE | CFM_COLOR | CFM_LINKPROTECTED;
cf2.dwEffects = CFE_LINK| CFE_UNDERLINE | CFE_LINKPROTECTED;
cf2.crTextColor = RGB(255, 0, 0);
cf2.bUnderlineType = CFU_UNDERLINENONE;
SendMessage(richEditHWND, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
Но это не работает.
Другой способ — установить цвет подчеркивания на белый цвет, который является фоновым цветом RichEdit, но это очень хакерский способ: разделять символы, такие как q, j, …, также при показе текста показывать линию.
Так каков правильный способ сделать это?
Замечания: я использую RICHEDIT50W
учебный класс.
Вы можете сделать это с помощью гиперссылка. Они позволяют указать произвольный текст (вместе с его собственным цветом и форматированием), который используется для отображения, а фактический URL-адрес скрыт.
По умолчанию текст гиперссылки с дружественным именем также отображается синим цветом.
с синим подчеркиванием, если текст имени не отформатирован
явный цвет. Явное форматирование имеет приоритет
Отображаемый текст должен иметь CFE_LINK
а также CFE_LINKPROTECTED
стили, а также явные цвета и стили форматирования. Затем вы устанавливаете URL с помощью ITextRange2::SetURL
метод.
Сообщение в блоге MSDN RichEdit Дружественные Имя Гиперссылки имеет более подробное описание того, как их использовать.
Недавно я столкнулся с той же проблемой и обнаружил, что это ошибка библиотеки Richedit. Когда я обновил его с v4.1 до v5.0, подчеркивание могло быть удалено без проблем
Попробуйте отправить сообщение EM_AUTOURLDETECT в элемент управления RichEdit с wParam = 0, lParam = 0
«Укажите 0, чтобы отключить автоматическое определение ссылки …»: https://msdn.microsoft.com/en-us/library/windows/desktop/bb787991(v=vs.85).aspx