CRichEditCtrl自动响应和检测URL

来源:互联网 发布:50元洗面奶推荐 知乎 编辑:程序博客网 时间:2024/05/16 18:31

在.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。