2016-01-14 4 views
3

Я добавил ссылку на RichEdit, использую структуру CFM_LINK/CHARFORMAT2. Но я не могу понять, как удалить эффект подчеркивания. Я пробовал:Как вставить гиперссылку без подчеркивания в Win32 RichEdit?

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.

ответ

-2

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

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

+0

Это не я проголосовать. Я пробовал это раньше и не работал – Sakura

+0

Можете ли вы поделиться кодом, в котором вы это пробовали? – kerem

+0

Наверняка, посмотри мое редактирование. – Sakura

2

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

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

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

В блоге MSDN RichEdit Friendly Name Hyperlinks есть более подробное описание о том, как их использовать.

+0

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^