如何用CHyperLink在CRichEditCtl中实现对选定的文本加入超链接

解决方案 »

  1.   

    m_rce.SendMessage(EM_AUTOURLDETECT, (WPARAM)true, 0);//Ö§³Ö×Ô¶¯³¬Á´½Ó
    m_rce.SetEventMask(ENM_LINK);//ÏìÓ¦Á´½Ó
    long s,e;
    m_rce.GetSel(s,e);
    m_rce.SetSel(s,e);
    CHARFORMAT2 cf2;ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
    cf2.cbSize = sizeof(CHARFORMAT2);
    cf2.dwMask = CFM_LINK;
    cf2.dwEffects |= CFE_LINK;
    ::SendMessage(m_rce.GetSafeHwnd(),EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
      

  2.   

    m_rce.SendMessage(EM_AUTOURLDETECT, (WPARAM)true, 0);
    m_rce.SetEventMask(ENM_LINK);//
    long s,e;
    m_rce.GetSel(s,e);
    m_rce.SetSel(s,e);
    CHARFORMAT2 cf2;ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
    cf2.cbSize = sizeof(CHARFORMAT2);
    cf2.dwMask = CFM_LINK;
    cf2.dwEffects |= CFE_LINK;
    ::SendMessage(m_rce.GetSafeHwnd(),EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
      

  3.   

    m_rce.SendMessage(EM_AUTOURLDETECT, (WPARAM)true, 0);
    m_rce.SetEventMask(ENM_LINK);//
    long s,e;
    m_rce.GetSel(s,e);
    m_rce.SetSel(s,e);
    CHARFORMAT2 cf2;ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
    cf2.cbSize = sizeof(CHARFORMAT2);
    cf2.dwMask = CFM_LINK;
    cf2.dwEffects |= CFE_LINK;
    ::SendMessage(m_rce.GetSafeHwnd(),EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
      

  4.   

    covsno()你好:
       能不能把你的CHyperLink的源码和设置超链接的这部分的代码完整的给我,我想研究研究,因为我的CHyperLink是我从网上下的,好像与你的不一样    肯定给你加分
      谢谢!!
      

  5.   

    我不知道你说的 CHyperLink 是什么
    CRichEditCtl就是这样设置超链接的响应的话,CMyRichEdit  继承CRichEditCtrl.h
    afx_msg void OnClickURL(NMHDR *pNmhdr, LRESULT *pResult);.cpp
    ON_NOTIFY_REFLECT(EN_LINK,OnClickURL)void CMyRichEdit::OnClickURL(NMHDR *pNmhdr, LRESULT *pResult)
    {
    TCHAR tcLink[2048];
    ENLINK *pLink = (ENLINK *)pNmhdr;
          if (penLink->msg == WM_LBUTTONUP)
    {
                    SetSel(pLink->chrg);//
    long Res = GetSelText((char *)tcLink);//
                    //openURL(tcLink);//在这里处理
    ShellExecute(NULL, "open", tcLink, NULL, NULL, SW_SHOWNORMAL);
    }
    }
      

  6.   

    这是.h文件和.cpp文件
    http://www.iscoding.com/ShowThread.aspx?PostID=212
    我的这个视图是基于CRichView的
    能不能把你的示例工程文件的代码给我,谢谢!![email protected]
      

  7.   

    covsno()你好:
        谢谢你给我发的代码!!
        我已经实现了,谢谢!!
        
        但是,这种设置超链接的方法只能就是要链接的网址或本地盘符,若是汉字的话就不行了,
        我想实现像Word那样选定任何文本后点击插入超级链接弹出一对话框,然后在对话框中设置
        要链接的位置,这样会更方便些,
        有什么好的方法吗,请指点指点,
        谢谢!!!