WTLSTLATLVisual Studio .NET 2002Visual Studio 6Visual C++ 7.0Windows 2000Visual C++ 6.0Windows XP中级开发Visual StudioWindowsC++
超链接文本视图控件






4.50/5 (4投票s)
2001年6月28日
1分钟阅读

126238

2205
一个显示文本并自动查找和突出显示超链接(例如 http://、www. 等)的控件,以便用户可以点击它们。
引言
此控件的工作方式类似于静态控件,但具有一些增强功能。主要功能是识别和显示文本中的超链接。
特性
- 自动识别超链接
- 自动换行的文本视图
- 鼠标悬停时突出显示超链接
- 自动显示滚动条
- 手动添加的超链接,可以执行一些操作
- 超链接的工具提示
要求
在使用“HyperTextCtr.h”之前,需要包含的下一个文件atlstr.h
atltypes.h
atlctrls.h
atlscrl.h
此外,此控件使用两个 STL 类:std::vector
和 std::list
如何在自己的应用程序中使用它
- 创建一个 WTL 项目,并将以下头文件添加到您的
stdafx.h
文件中// WTL includes #include <atlstr.h> #include <atltypes.h> #include <atlctrls.h> #include <atlscrl.h> // Hyper Text Control #include "HyperTextCtrl.h"
- 为了支持鼠标滚轮,在 stdafx.h 中所有包含之前定义以下内容
#define _WIN32_WINNT 0x0400
- 将 HyperTextControl.h 添加到解决方案
- 在视图类中添加变量声明
CHyperTextCtrl m_hc;
- 在 WM_CREATE 消息处理程序中创建控件并设置控件的属性
m_hc.Create(m_hWnd, rcDefault, NULL, WS_VISIBLE | WS_CHILD | HTC_WORDWRAP |HTC_AUTO_SCROLL_BARS | HTC_UNDERLINE_HOVER | HTC_ENABLE_TOOLTIPS, 0, 0); CFont fnt; fnt.CreatePointFont(90, "Tahoma"); m_hc.SetFont(fnt.Detach()); // default font is Times New Roman m_hc.SetLinkColor(RGB(0,130,0)); // default is blue m_hc.SetHoverColor(RGB(0,30,0)); // default is red
支持的附加控件样式HTC_WORDWRAP
文本自动换行HTC_AUTO_SCROLL_BARS
自动显示/隐藏滚动条HTC_UNDERLINE_LINKS
下划线链接HTC_UNDERLINE_HOVER
鼠标悬停时下划线链接HTC_ENABLE_TOOLTIPS
启用超链接工具提示
- 添加文本和/或手动添加超链接
m_hc.SetWindowText("The https://codeproject.org.cn is a very nice place for the sources."); m_hc.AppendHyperLink("Launch notepad\n", "Click here to open notepad", "notepad.exe", ""); m_hc.AppendText("Send mail to "); m_hc.AppendHyperLink("author\n\n", "Click here to send e-mail", "mailto:maq@...",""); m_hc.AppendHyperLink("Close this window\n", "Click here to close window", m_hWnd, WM_CLOSE, 0, 0);
- 将以下代码添加到视图的 WM_SIZE 消息处理程序中,以使其适应
在调整大小的时候CRect rc; GetClientRect(rc); m_hc.MoveWindow(rc);
环境
此控件使用 VC7、WTL7 创建。它已在 Windows XP Pro 英文版上进行了测试。
历史
11.06.2002
+ CHyperTextCtrlFSB - 使用平面滚动条
+ SetTextColor, SetBkColor
- 修复了错误
08.06.2002
+ 现在 CHyperTextCtrl 继承自 CHyperTextCtrlT<>
07.06.2002
+ .cpp 文件已删除。现在所有代码都在 HyperTextCtrl.h 中
- 修复了错误
* 在 WinXP、VC++7、WTL7 上测试
01.06.2001
+ 创建了控件。
* 在 Win2K、VC++6 SP3、WTL3.1 上测试