翻译来源: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
这是一个简单的超链接控件,可以插入到任何对话框中。已经有这样的一些例子(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_RIGHT
和SS_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,则使用系统突出显示颜色。