MFC应用---超链接RichEdit
来源:互联网 发布:mysql 子查询效率 编辑:程序博客网 时间:2024/06/07 05:31
MFC应用---超链接RichEdit
1.简单介绍
CrichEditCtrl,MFC的该控件功能还是比较优秀的。其中一条就是能够自动识别文本内容的超链接,并能够显示单击后实现跳转。
大致如同这样的效果
具体可以去 这边下载 例子代码
2.具体实现
1.控件CRichEditCtrl ,使用该类型的编辑控件;
在对话框中设置成员变量:
CRichEditCtrlm_edit;
2.创建CrichEditCtrl控件,并设置它的消息属性;
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.编写超链接响应函数
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
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
- RichEdit中加超链接
- richedit实现超链接
- Richedit实现超链接
- 在RichEdit中使用超链接
- 在RichEdit中实现超链接
- MFC中RichEdit控制~
- MFC RichEdit的使用
- MFC RichEdit使用
- MFC笔记 RichEdit控件
- MFC 控件richedit
- MFC:RichEdit and CFindReplaceDialog
- [MFC] RichEdit 控件使用
- MFC RichEdit控件
- MFC 添加richedit控件
- 2012-2013年度总结
- 【线段树】序列操作 operation 四川2010省选 SCOI2010
- Uva 11538-Chess queue象棋中的皇后
- Makefile实例1
- 给Android应用开发者的十个建议
- MFC应用---超链接RichEdit
- js 下拉框
- ContentProvider学习心得(中)--通过单元测试的方式完成对通讯录内容的操作
- 同步互斥发展历史算法
- Android--用JSON解析数据
- 真机测试及布署Code Sign error问题总结
- 购房随想
- Android之Activity与Service通信
- iOS中autorelease变量应注意的问题