现在的位置: 首页 > 综合 > 正文

在RichEdit2.0中加超链接

2013年06月25日 ⁄ 综合 ⁄ 共 1481字 ⁄ 字号 评论关闭

1.首先支持2.0
LoadLibrary("RICHED20.DLL");
2. 这个函数把选中的内容变成超链接
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);
}
3.在OnInitDialog调用
m_cRich.SetEventMask(ENM_LINK);//支持超链接点击响应
         m_cRich.SendMessage(EM_AUTOURLDETECT, (WPARAM)true, 0);//支持自动超链接
BEGIN_MESSAGE_MAP(CMyEdit, CRichEditCtrl)
ON_NOTIFY_REFLECT(EN_LINK,OnURLClick)
END_MESSAGE_MAP()

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;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

关于 2. 这个函数把选中的内容变成超链接 SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
怎么样用这个 函数 把要加入的 汉字文本 变成超文本 比如加  “同意” “拒绝”两个超文本

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

SetSel(0, -1);
 CString strText = GetSelText();
 int nPos = strText.Find("接收");
 if (-1 < nPos)
 { 
 int nPosStart = MultiByteToWideChar(CP_ACP, 0, strText, nPos, NULL, 0);
 int nPosEnd = MultiByteToWideChar(CP_ACP, 0, strText, nPos + strlen(strLink), NULL, 0);
 SetSel(nPosStart, nPosEnd);
         }
上面的代码可以选中接受

抱歉!评论已关闭.