65.9K
CodeProject 正在变化。 阅读更多。
Home

超链接文本视图控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (4投票s)

2001年6月28日

1分钟阅读

viewsIcon

126238

downloadIcon

2205

一个显示文本并自动查找和突出显示超链接(例如 http://、www. 等)的控件,以便用户可以点击它们。

Sample Image - hv.gif

引言

此控件的工作方式类似于静态控件,但具有一些增强功能。
主要功能是识别和显示文本中的超链接。

特性

  • 自动识别超链接
  • 自动换行的文本视图
  • 鼠标悬停时突出显示超链接
  • 自动显示滚动条
  • 手动添加的超链接,可以执行一些操作
  • 超链接的工具提示

要求

在使用“HyperTextCtr.h”之前,需要包含的下一个文件
atlstr.h
atltypes.h
atlctrls.h
atlscrl.h

此外,此控件使用两个 STL 类:std::vectorstd::list

如何在自己的应用程序中使用它

  1. 创建一个 WTL 项目,并将以下头文件添加到您的 stdafx.h 文件中
    // WTL includes
    
    #include <atlstr.h>
    
    #include <atltypes.h>
    
    #include <atlctrls.h>
    
    #include <atlscrl.h>
    
    
    // Hyper Text Control
    
    #include "HyperTextCtrl.h"
    
    
  2. 为了支持鼠标滚轮,在 stdafx.h 中所有包含之前定义以下内容
    #define _WIN32_WINNT 0x0400
  3. 将 HyperTextControl.h 添加到解决方案

  4. 在视图类中添加变量声明
    CHyperTextCtrl m_hc;
  5. 在 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 启用超链接工具提示

  6. 添加文本和/或手动添加超链接
    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);
  7. 将以下代码添加到视图的 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 上测试

© . All rights reserved.