在RichEdit2.0中加超链接

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);
         }
上面的代码可以选中接受

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值