MFC应用---超链接RichEdit
2013-08-15 20:43
399 查看
1.简单介绍
CrichEditCtrl,MFC的该控件功能还是比较优秀的。其中一条就是能够自动识别文本内容的超链接,并能够显示单击后实现跳转。大致如同这样的效果
具体可以去 这边下载 例子代码
2.具体实现
1.控件CRichEditCtrl ,使用该类型的编辑控件;在对话框中设置成员变量:
[cpp] view
plaincopyprint?
CRichEditCtrlm_edit;
2.创建CrichEditCtrl控件,并设置它的消息属性;
[cpp] view
plaincopyprint?
GetClientRect(&rcClient);
if(!m_edit.Create(WS_VISIBLE|WS_CHILD|ES_MULTILINE,rcClient,this,IDC_EDIT_SHOW))
{
returnFALSE;
}
m_edit.SetFont(m_listJust4Font.GetFont());
DWORD mask =::SendMessage(m_edit.m_hWnd,EM_GETEVENTMASK, 0, 0);
mask = mask | ENM_LINK | ENM_MOUSEEVENTS | ENM_SCROLLEVENTS |ENM_KEYEVENTS;
::SendMessage(m_edit.m_hWnd,EM_SETEVENTMASK, 0, mask);
::SendMessage(m_edit.m_hWnd,EM_AUTOURLDETECT, true, 0);
//上诉代码放在对话框的OnInitDialog函数中。
3.编写超链接响应函数
[cpp] view
plaincopyprint?
afx_msg void OnRichEditLink(NMHDR* in_pNotifyHeader, LRESULT*out_pResult );
ON_NOTIFY(EN_LINK,IDC_EDIT_SHOW, OnRichEditLink)
void CHyperlinkEditDlg::OnRichEditLink(NMHDR*in_pNotifyHeader, LRESULT* out_pResult )
{
ENLINK* l_pENLink =(ENLINK*)in_pNotifyHeader ;
*out_pResult = 0 ;
switch(l_pENLink->msg)
{
caseWM_LBUTTONDOWN:
{
CString strURL ;
CHARRANGE crCharRange ;
CRichEditCtrl * pTempEdit;
pTempEdit =(CRichEditCtrl*)CRichEditCtrl::FromHandle(l_pENLink->nmhdr.hwndFrom);
pTempEdit->GetSel(crCharRange );
pTempEdit->SetSel(l_pENLink->chrg);
strURL = pTempEdit->GetSelText();
pTempEdit->SetSel(crCharRange);
CWaitCursor l_WaitCursor ;
ShellExecute( this->GetSafeHwnd(), _T( "open"),strURL, NULL, NULL, SW_SHOWNORMAL ) ;
*out_pResult = 1 ;
}
break ;
caseWM_LBUTTONUP:
{
*out_pResult = 1 ;
}
break ;
}
}
3.代码解释
先讲一下上面几个属性EM_GETEVENTMASK : 主要是获得CRichEditCtrl会传给它的父窗口那些通知;
EM_SETEVENTMASK : 主要是设置CRichEditCtrl会传给它的父窗口那些通知;
EM_AUTOURLDETECT : 主要是设置CRichEditCtrl是否自动检测超链接;
//
在消息响应函数中OnRichEditLink,其中结构体ENLINK
[cpp] view
plaincopyprint?
typedef struct _enlink
{
NMHDR nmhdr;
UINT msg;
WPARAM wParam;
LPARAM lParam;
CHARRANGE chrg;
} ENLINK;
//nmhdr 制定是哪传来的消息通知,其中包含了消息来源窗口的hwnd
//chrg 在richedit中有链接效果的文字的区域
上面的代码的思路,主要是通过设置超链接文字为选中,在获得选中文字,然后将跳转这段url。
相关文章推荐
- MFC应用---超链接RichEdit
- mfc richedit 自动换行设置
- RichEdit中加超链接
- MFC:RichEdit and CFindReplaceDialog
- MFC 控件richedit
- richedit实现超链接
- MFC RichEdit的用法汇总
- 43.VC(custom)-richedit实现超链接(随手代码)
- 在 wxWidgets 中使用 RichEdit 及超链接自动识别
- VC/MFC中使用RichEdit 要注意的地方
- mfc richedit 自动换行
- MFC RichEdit使用
- 在RichEdit中实现超链接
- VC/MFC中使用RichEdit 要注意的地方
- Richedit实现超链接
- 在 wxWidgets 中使用 RichEdit 及超链接自动识别
- MFC RichEdit
- Richedit应用:有趣的随机色与随机字符的获取与控制
- RichEdit中支持超链接的实现
- [MFC]RichEdit响应回车换行,自动水平/垂直滚动