You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为CHyperlink控件实现GetURL与GetTooltip方法?

实现CHyperlink类的GetURL和GetTooltip方法

CHyperlink类派生自CMFCLinkCtrl,提供了SetURL和SetTooltip方法,但没有对应的获取方法,我们可以通过以下方式实现:

1. 在类中声明Get方法

在CHyperlink的头文件里添加两个方法声明:

class CHyperlink : public CMFCLinkCtrl
{
public:
    // 获取链接地址
    CString GetURL() const;
    // 获取提示文本
    CString GetTooltip() const;
};

2. 实现GetURL方法

利用Windows公共控件的LM_GETURL消息直接读取URL:

CString CHyperlink::GetURL() const
{
    CString strURL;
    // 向控件发送LM_GETURL消息,缓冲区大小设为MAX_PATH
    ::SendMessage(const_cast<CHyperlink*>(this)->m_hWnd, LM_GETURL, MAX_PATH, (LPARAM)strURL.GetBuffer(MAX_PATH));
    strURL.ReleaseBuffer();
    return strURL;
}

3. 实现GetTooltip方法

通过CMFCLinkCtrl继承的GetToolTipCtrl()获取tooltip控件,再读取文本:

CString CHyperlink::GetTooltip() const
{
    CString strTooltip;
    CToolTipCtrl* pToolTip = const_cast<CHyperlink*>(this)->GetToolTipCtrl();
    if (pToolTip != nullptr && pToolTip->GetSafeHwnd() != nullptr)
    {
        // 读取控件关联的tooltip文本(单个控件通常用ID 0)
        pToolTip->GetText(strTooltip, this, 0);
    }
    return strTooltip;
}

补充说明

  • LM_GETURL是链接控件的标准系统消息,CMFCLinkCtrl内部实现SetURL也是基于这个消息,直接发送消息获取是最贴合原生逻辑的方式。
  • GetToolTipCtrl()是CMFCButton(CMFCLinkCtrl的父类)提供的方法,通过它可以直接操作tooltip控件,无需额外处理消息。

内容的提问来源于stack exchange,提问作者Andrew Truckle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:20:41