例如:我在edit框里面输入了http://www.csdn.net,那么在edit框里面应该显示这条链接,并且用鼠标点击该链接就自动弹出一个网页,网页地址就是这条链接http://www.csdn.net

解决方案 »

  1.   

    richedit中的EM_LINK
    或者Edit自己定义字体
    然后捕捉单击后ShellExecute
      

  2.   

    http://www.evget.com/articles/evget_1249.html
    三.聊天常用 a.LINK 链接功能1. LoadLibrary(_T("Riched20.dll"));2. 创建RichEdit2.0控件CreateEx(0, _T("RichEdit20A"), NULL, WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP
    |ES_READONLY|ES_WANTRETURN|ES_MULTILINE,
    rect.left, rect.top, cx, cy,
    pParentWnd->m_hWnd, (HMENU)nID, NULL);3. 设定选中的文字为链接显示
    CHARFORMAT2 cf2;
    ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
    cf2.cbSize = sizeof(CHARFORMAT2);
    cf2.dwMask = CFM_LINK;
    cf2.dwEffects |= CFE_LINK;
    m_cRichEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);4.支持链接的点击响应
    m_cRichEdit.SetEventMask(ENM_LINK);5.响应链接的点击EN_LINK
    BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)
    ON_NOTIFY_REFLECT(EN_LINK,OnURL)
    END_MESSAGE_MAP()
    ......void CMyRichEdit::OnURLClick(NMHDR *pNmhdr, LRESULT *pResult)
    {
        TCHAR LinkChar[512];
        ENLINK *pLink = (ENLINK *)pNmhdr;
        if (pLink->msg == WM_LBUTTONUP)
        {
            SetSel(penLink->chrg);//这是链接的文字范围
            long Res = GetSelText((char *)LinkChar);//这是链接文字
            //后面是你的处理过程
            ......
         }
    }
      

  3.   

    里面还有几个问题不明白,一个是ON_NOTIFY_REFLECT(EN_LINK,OnURL)这个好像是鼠标放到链接上面就直接做OnURL函数里面的内容啦,有没有就是通过点击来触发OnURL这个函数的方法。第二个问题是在OnURL函数里面怎么去得到链接文字的内容?上面好像只是取得链接文字的长度
      

  4.   

    long Res = GetSelText((char *)LinkChar);//这是链接文字
      

  5.   

    控件中国网http://www.componentcn.com上有教程