牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

关于RichEdit的一些小总结(不断更新)

1.插入自定义超链接
    对于编辑框中的超链接,我们会有如此的需求:点击超链接响应消息,并弹出一个菜单或者窗口。RichEdit2.0给我们提供了CFM_LINK和CFE_LINK用于超链接,但是非常遗憾的是它不能用于自定义超链接。经过了我许多次的尝试的失败告诉我,RichEdit2.0实际上无法实现这个需求。
    后来,我发现要实现这一个需求一个DLL:MsftEdit Version 5.0。QQ、淘宝旺旺、百度hi……他们都用的它。
    不过,当你想要去进入这些程序的目录下拷出来这个dll的时候,你会发现你找不到这个DLL!为什么呢?因为他们都把它改名了,改成了RICHED20.DLL!是的,你需要把它拷出来就是了!真正的Richedit20.dll实际上只有四百多kb,而用MsftEdit改名的这个dll却有九百多kb。
    好了,现在我把它拷贝到了我的应用程序目录下了,接下来如何做呢?我们需要以下这个方法:
CString BuildRtfHyperLink( CString strText, CString strUrl )
{
    CString strRtf;
    strRtf.Format( TEXT(
"{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\fnil\\fprq2\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}} {\\colortbl ;\\red0\\green0\\blue255;\\red255\\green0\\blue255;}\\viewkind4\\uc1\\pard{\\cf1\\ul\\f0\\fs18\\lang2052{\\field{\\*\\fldinst{HYPERLINK \"%s\" }}{\\fldrslt{%s}}}}\\cf2\\f0\\fs20\\lang1033}"),
        strUrl, strText);
    
return strRtf;
}
    怎样?看得很晕是吧?这个方法是构建一个RTF的超链接字符串用的。是的,我的做法就是插入一个RTF字符串!MsftEdit应该内部有对RTF格式字符串的管理类,RichEdit里面的数据,我们一般很难触碰到的,就算能触碰到,要去进行修改和读取也不是容易的事情,这绝对是一个不合算的事情。能使用它内部的系统来达成我们的需求目的是最好不过。真好!MsftEdit给我们提供了这个工具!
    我们只需要用上面的方法构建并且插入就可以,非常Easy,是吧?

posted on 2010-03-22 16:40 杨粼波 阅读(2111) 评论(1)  编辑 收藏 引用

评论

# re: 关于RichEdit的一些小总结(不断更新)[未登录] 2013-04-20 22:41 sdf

dfa  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理