Click here to Skip to main content
14,977,910 members
Articles / Desktop Programming / WTL
Posted 27 Jun 2001


37 bookmarked

Hyperlink Text View Control

Rate me:
Please Sign up or sign in to vote.
4.50/5 (4 votes)
20 Jun 20021 min read
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


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


  • 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


Next files required to be included before "HyperTextCtr.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 <span class="code-keyword"><atlstr.h></span>
    #include <span class="code-keyword"><atltypes.h></span>
    #include <span class="code-keyword"><atlctrls.h></span>
    #include <span class="code-keyword"><atlscrl.h></span>
    // Hyper Text Control
    #include <span class="code-string">"HyperTextCtrl.h"</span>
  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, 
    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 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;


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


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

+ Now CHyperTextCtrl inherits from CHyperTextCtrlT<>

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

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


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


About the Author

Magomed Abdurakhmanov
Web Developer
Russian Federation Russian Federation
No Biography provided

Comments and Discussions

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