我添加了一个指向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
样式,以及显式颜色和格式样式。然后,使用 ITextRange2::SetURL
方法设置 URL。
MSDN 博客文章 RichEdit 友好名称超链接提供了有关如何使用它们的更详细说明。
我最近遇到了同样的问题,我只是发现这是 Richedit 库的错误。当我将其从 v4.1 更新到 v5.0 时,下划线可以毫无问题地删除
尝试使用 wParam=0, lParam=0 向 RichEdit 控件发送EM_AUTOURLDETECT消息
"指定 0 以禁用自动链接检测...": https://msdn.microsoft.com/en-us/library/windows/desktop/bb787991(v=vs.85).aspx