请教大神,如何才能完美实现RichEdit2控件文字链接功能?

ioridf 2012-07-21 06:12:17
直接上关键部分代码(程序中使用的是Rich Edit 2.0 Control):
CRichEditCtrl m_RiceEdit;
m_RiceEdit.Clear();
m_RiceEdit.SetWindowText("你好中国");
m_RiceEdit.SetSel(0, 2);

CHARFORMAT2 cf2;
ZeroMemory(&cf2, sizeof(CHARFORMAT2));
cf2.cbSize = sizeof(CHARFORMAT2);
cf2.dwMask = CFM_LINK;
cf2.dwEffects |= CFE_LINK;


m_RiceEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION , (LPARAM)&cf2);
m_RiceEdit.SetEventMask(ENM_LINK);

但是运行起来以后,鼠标移到字体“你好”上,确实可以变成小手的样子,但是鼠标移到“你好”的正下方区域(还是在Rich Edit控件区域内),仍然是小手图标,不知怎样才能做到只有鼠标移到“你好”上,才变小手呢?有知道的大侠帮忙指点一下吧,我送全分!
...全文
191 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhaoqi001 2013-10-19
有没有遇到过这个问题,超链接文字一旦拷贝,再黏贴,黏贴后的文字就不是超链接了(比如,“你好中国”的“你好”设置了超链接,可以响应鼠标点击,但是复制“你好中国”,再黏贴,黏贴的“你好中国”不再是超链接),有知道的麻烦指导下,不甚感激
回复
ioridf 2012-07-22
你是怎么发现这个解决办法的?我看了半天MSDN都没找到解决办法,要不是你这一点拨,估计我这周末就要郁闷地过了。。感觉用MFC有时候想要实现一个看似很简单的小功能,比如QQ聊天窗口中的图片显示(假如点了图片,图片可以右上角打个绿色的小勾),这个效果用MFC我估计就相当难实现!![Quote=引用 1 楼 的回复:]
如果下面还有字符就不会有这种问题,如果是最后一行就加个空行

C/C++ code

m_RichEdit.Clear();
m_RichEdit.SetWindowText(_T("你好中国\r\n"));
m_RichEdit.SetSel(0, 2);

CHARFORMAT2 cf2;
ZeroMemory(&cf2, sizeof(CHARFORMAT2……
[/Quote]
回复
ioridf 2012-07-22
我测试了一下,加回车换行符确实可以解决问题。这个分给你了![Quote=引用 1 楼 的回复:]

如果下面还有字符就不会有这种问题,如果是最后一行就加个空行

C/C++ code

m_RichEdit.Clear();
m_RichEdit.SetWindowText(_T("你好中国\r\n"));
m_RichEdit.SetSel(0, 2);

CHARFORMAT2 cf2;
ZeroMemory(&cf2, sizeof(CHARFORMAT……
[/Quote]
回复
zgl7903 2012-07-21
如果下面还有字符就不会有这种问题,如果是最后一行就加个空行


m_RichEdit.Clear();
m_RichEdit.SetWindowText(_T("你好中国\r\n"));
m_RichEdit.SetSel(0, 2);

CHARFORMAT2 cf2;
ZeroMemory(&cf2, sizeof(CHARFORMAT2));
cf2.cbSize = sizeof(CHARFORMAT2);
cf2.dwMask = CFM_LINK;
cf2.dwEffects |= CFE_LINK;

m_RichEdit.SetSelectionCharFormat(cf2);
m_RichEdit.SetEventMask(ENM_LINK);
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2012-07-21 06:12
社区公告
暂无公告