Hyperlink超链接控件CHyperLink类

翻译来源:https://www.codeproject.com/Articles/34/Hyperlink-control

另外一个关于按钮超链接的类:一个简单的MFC HyperLink按钮类,支持任何大小的32bpp图标

一个静态的超链接控制

Small C++ class to transform any static control into a hyperlink control

一个常用的超链接控件。

作者:Chris Maunder

  • 下载演示项目 - 21 Kb
  • 下载源 - 7 Kb

    CHyperLink示例图像 

    这是一个简单的超链接控件,可以插入到任何对话框中。已经有这样的一些例子(PJ Naughter,和来自MSJ的Paul DiLascia的一些例子),但没有一个具有我想要的所有功能。GotoURL在8月9日的WDJ中使用了Stuart Patterson 功能。它比一个简单的更健壮ShellExecute,我已经修改了一点更多的Unicode友好。

    超链接最初是蓝色的,但是当光标在其上方,并且在用户点击它之后会改变颜色。当鼠标指针在链接上方时出现的光标CHyperLink::SetLinkCursor可以使用链接颜色和下划线轻松设置默认光标是一个小指针(来自winhlp32.exe文件的光标#106 - 感谢MSJ的Paul DiLascia)。还有一个用于分配控件的底层URL的链接的工具提示。

    链接有三个下划线模式,使用CHyperLink::SetUnderline以下设置

    • CHyperLink::ulHover - 当光标超过链接时出现下划线
    • CHyperLink::ulNone - 没有下划线
    • CHyperLinkulAlways - 链接总是下划线

    要使用超链接控件,只需创建静态控件(例如IDC_HYPERLINK)并将其附加到类型的成员变量CHyperLink链接的URL被视为静态控件的标题,除非另有说明。如果没有指定控件的标题,则将其设置为URL。如果不存在,则会发生调试断言。

    控件可以自动调整大小以适应标题大小(以保留真正的超链接外观和感觉)。调整大小将兑现

    SS_CENTERIMAGE,
    SS_LEFT
    SS_RIGHTSS_CENTER旗帜。

    控制非常简单。按钮按钮和颜色通知由控件处理,并根据链接的状态选择适当的字体和颜色。唯一棘手的是处理按钮点击。为了做到这一点,静态控件必须SS_NOTIFY设置位,并且ON_CONTROL_REFLECT安装STN_CLICKED消息处理程序

    要实际跟随该链接,ShellExecute将被调用来打开该URL,但是如果此操作失败,则会检查注册表以便找到.htm文件的可能候选者。如果找到它,那么它是启动的,希望它可以处理提供的URL字符串。无论如何,出现故障时会显示错误信息。

    CHyperLink的操作

    void SetURL(CString strURL);      // Get and set the target URL for the link
    CString GetURL();                 
    
    // Set (and get) the Link (unvisited and unvisited) colours      
    void SetColours(COLORREF crLinkColour, COLORREF crVisitedColour
                    COLORREF crHoverColour = -1);                      
    COLORREF GetLinkColour();      
    COLORREF GetVisitedColour();      
    COLORREF GetHoverColour();      
    
    // Set (and get) whether or not the link has been visited      
    void SetVisited(BOOL bVisited = TRUE);      
    BOOL GetVisited();      
    
    void SetLinkCursor(HCURSOR hCursor);      // Set the cursor for the link      
    
    // Set (and get) whether or not ot underline the link)      
    void SetUnderline(int nUnderline = CHyperLink::ulHover);      
    int GetUnderline();
    
    // Set (and get) whether to autosize the control to fit the caption text      
    void SetAutoSize(BOOL bAutoSize = TRUE);      
    BOOL GetAutoSize();

    关于SetColour的注意事项:这允许指定未访问/访问和悬停的颜色。如果悬停颜色(光标在其上方时显示链接的颜色)为-1,则使用系统突出显示颜色。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值