您的位置:首页 > 其它

vc6中richedit显示链接的实现

2009-04-06 20:58 267 查看
下午照着论坛一个帖子做的,记录下来。



步骤:

1. 建立基于对话框的mfc工程,名字就叫showlink吧。

2. 将richedit控件拖入对话框内,打开CShowlinkApp类,在InitInstance中添加AfxInitRichEdit()。

3. 用classwizard新建一个CRichEditCtrl的派生类CMyEdit,并添加两个函数:

void CMyEdit::SetLink()
{
CHARFORMAT2 cf2;
ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
cf2.cbSize = sizeof(CHARFORMAT2);
cf2.dwMask = CFM_LINK;

cf2.dwEffects |= CFE_LINK;
SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);

}



void CMyEdit::OnURLClick(NMHDR *pNmhdr, LRESULT *pResult)
{
TCHAR LinkChar[512];
ENLINK *penLink = (ENLINK *)pNmhdr;
if (penLink->msg == WM_LBUTTONUP)
{
SetSel(penLink->chrg);
long Res = GetSelText((char *)LinkChar);
LinkChar[Res] = 0;
ShellExecute(NULL, "open", LinkChar, NULL, NULL, SW_SHOWNORMAL);
}
pResult = FALSE;

}



4.在MyEdit.cpp的BEGIN_MESSAGE_MAP(CMyEdit, CRichEditCtrl)里添加一句话:ON_NOTIFY_REFLECT(EN_LINK,OnURLClick)



5.在showlinkdlg.h中添加#include "MyEdit.h",在类中添加一个成员变量CMyedit m_cRich.



6.在CShowlinkDlg的OnInitDialog中添加两句:

m_cRich.SetEventMask(ENM_LINK);
m_cRich.SendMessage(EM_AUTOURLDETECT, (WPARAM)true,0);



编译一下,输入个网址,点击就可以打开了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: