Как вставить гиперссылку без подчеркивания в Win32 RichEdit?

Я добавил ссылку на 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 учебный класс.

3

Решение

Вы можете сделать это с помощью гиперссылка. Они позволяют указать произвольный текст (вместе с его собственным цветом и форматированием), который используется для отображения, а фактический URL-адрес скрыт.

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

Отображаемый текст должен иметь CFE_LINK а также CFE_LINKPROTECTED стили, а также явные цвета и стили форматирования. Затем вы устанавливаете URL с помощью ITextRange2::SetURL метод.

Сообщение в блоге MSDN RichEdit Дружественные Имя Гиперссылки имеет более подробное описание того, как их использовать.

2

Другие решения

Недавно я столкнулся с той же проблемой и обнаружил, что это ошибка библиотеки Richedit. Когда я обновил его с v4.1 до v5.0, подчеркивание могло быть удалено без проблем

0

Попробуйте отправить сообщение EM_AUTOURLDETECT в элемент управления RichEdit с wParam = 0, lParam = 0

«Укажите 0, чтобы отключить автоматическое определение ссылки …»: https://msdn.microsoft.com/en-us/library/windows/desktop/bb787991(v=vs.85).aspx

-2
По вопросам рекламы [email protected]