在.h中定义变量CRichEditCtrl m_pRichEdit;
在.cpp中实现自动响应和检测URL
unsigned int mask = ::SendMessage(m_pRichEdit.m_hWnd, EM_GETEVENTMASK, 0, 0);
::SendMessage(m_pRichEdit.m_hWnd, EM_SETEVENTMASK, 0, mask|ENM_LINK|ENM_MOUSEEVENTS|ENM_SCROLLEVENTS|ENM_KEYEVENTS);
::SendMessage(m_pRichEdit.m_hWnd, EM_AUTOURLDETECT, true, 0);
添加响应函数
ON_NOTIFY(EN_LINK,ID,OnURLClick)//ID表示对应m_pRichEdit;的资源ID。
void OnURLClick(NMHDR *pNmhdr, LRESULT *pResult)
{
TCHAR LinkChar[512];
ENLINK *pLink = (ENLINK *)pNmhdr;
if (pLink->msg == WM_LBUTTONUP)
{
CString l_URL = _T("");
m_pRichEdit.GetTextRange(pLink->chrg.cpMin,pLink->chrg.cpMax,l_URL);//process URL to m_pRichEdit now
::ShellExecute(NULL, NULL, L"iexplore", l_URL, NULL, SW_SHOW);
}
}
这样当我们点击m_pRichEdit中的URL时,就会自动调用浏览器打开该URL。