下午照著論壇一個文章做的,記錄下來。
步驟:
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);
編譯一下,輸入個網址,點擊就可以開啟了