Click here to Skip to main content
15,868,164 members
Articles / Desktop Programming / WTL
Article

Hyperlink Text View Control

Rate me:
Please Sign up or sign in to vote.
4.50/5 (4 votes)
20 Jun 20021 min read 123.7K   2.2K   37   19
Control that shows text and automatically finds and highlights hyperlinks (like http://, www. etc.) so that user can click on them.

Sample Image - hv.gif

Introduction

This control works like a static control, but have some enhancements.
The main is that it recognizes and shows hyperlinks in text.

Feautures

  • Automatically recognizes hyperlinks
  • Word wrapped text view
  • Highlights hyperlink when hover
  • Auto show scrollbars
  • Manually added hyperlinks that can do some operations
  • Tool tips for hyperlinks

Requirements

Next files required to be included before "HyperTextCtr.h":
atlstr.h
atltypes.h
atlctrls.h
atlscrl.h

Also this control uses two STL classes: std::vector and std::list

How to use it in your own applications

  1. Create WTL project and add following header files to your stdafx.h file:
    // WTL includes
    #include <atlstr.h>
    #include <atltypes.h>
    #include <atlctrls.h>
    #include <atlscrl.h>
    
    // Hyper Text Control
    #include "HyperTextCtrl.h"
  2. To support mouse wheel define the following in stdafx.h before all includes:
    #define _WIN32_WINNT 0x0400
  3. Add HyperTextControl.h to solution

  4. Add variable declaration inside view class:
    CHyperTextCtrl m_hc;
  5. Create control and set control's properties in WM_CREATE message handler:
    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
    Supported additional control styles:
    • HTC_WORDWRAP Word wrap text
    • HTC_AUTO_SCROLL_BARS Auto show/hide scroll bars
    • HTC_UNDERLINE_LINKS Underline links
    • HTC_UNDERLINE_HOVER Underline hover links
    • HTC_ENABLE_TOOLTIPS Enable hyperlink tool tips

  6. Add text and/or manually add hyperlinks:
    m_hc.SetWindowText("The http://www.codeproject.com 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. Add the following code to WM_SIZE message handler of view to fit control into
    the view when resizing:
    CRect rc;
    GetClientRect(rc);
    m_hc.MoveWindow(rc);

Environment

This control was created with VC7, WTL7.
It has been tested on Windows XP Pro English.

History

11.06.2002
+ CHyperTextCtrlFSB - uses flat scroll bars
+ SetTextColor, SetBkColor
- bugs fixed

08.06.2002
+ Now CHyperTextCtrl inherits from CHyperTextCtrlT<>

07.06.2002
+ .cpp file removed. Now all code is in HyperTextCtrl.h
- bugs fixed
* Tested on WinXP, VC++7, WTL7

01.06.2001
+ Control was created.
* Tested on Win2K, VC++6 SP3, WTL3.1

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Russian Federation Russian Federation
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Generalerror with vs2005 wtl8 Pin
gaoyh23-Sep-08 22:48
gaoyh23-Sep-08 22:48 
GeneralHelp with headers Pin
xrigau15-Sep-03 20:21
xrigau15-Sep-03 20:21 
GeneralI added HTC_CENTER Pin
Phlip30-Jan-03 10:46
Phlip30-Jan-03 10:46 
GeneralGreat control! But, at the risk of pedantry... Pin
Phlip20-Nov-02 20:00
Phlip20-Nov-02 20:00 
GeneralRe: Great control! But, at the risk of pedantry... Pin
Magomed Abdurakhmanov20-Nov-02 21:22
Magomed Abdurakhmanov20-Nov-02 21:22 
GeneralRe: Great control! But, at the risk of pedantry... Pin
Magomed Abdurakhmanov20-Nov-02 21:24
Magomed Abdurakhmanov20-Nov-02 21:24 
GeneralRe: Great control! But, at the risk of pedantry... Pin
Magomed Abdurakhmanov20-Nov-02 21:24
Magomed Abdurakhmanov20-Nov-02 21:24 
GeneralRe: Great control! But, at the risk of pedantry... Pin
Phlip21-Nov-02 8:14
Phlip21-Nov-02 8:14 
GeneralGreat control!! Pin
Kronuz18-Oct-02 7:47
Kronuz18-Oct-02 7:47 
GeneralRe: Great control!! Pin
Magomed Abdurakhmanov19-Oct-02 23:31
Magomed Abdurakhmanov19-Oct-02 23:31 
GeneralNice but.... Pin
loket21-Jun-02 12:02
loket21-Jun-02 12:02 
GeneralRe: Nice but.... Pin
Magomed Abdurakhmanov22-Jun-02 7:22
Magomed Abdurakhmanov22-Jun-02 7:22 
GeneralRe: Nice but.... Pin
Magomed Abdurakhmanov23-Jun-02 2:05
Magomed Abdurakhmanov23-Jun-02 2:05 
GeneralRe: Nice but.... Pin
Magomed Abdurakhmanov23-Jun-02 4:26
Magomed Abdurakhmanov23-Jun-02 4:26 
GeneralRe: Nice but.... Pin
Anna-Jayne Metcalfe12-Jun-03 22:28
Anna-Jayne Metcalfe12-Jun-03 22:28 
Generalatlres.h is missing from the RES directory Pin
Marat Bedretdinov30-Jun-01 11:34
Marat Bedretdinov30-Jun-01 11:34 
GeneralRe: atlres.h is missing from the RES directory Pin
Magomed Abdurakhmanov2-Jul-01 6:52
Magomed Abdurakhmanov2-Jul-01 6:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.