Click here to Skip to main content
Click here to Skip to main content

Hyperlink Text View Control

, 20 Jun 2002
Rate this:
Please Sign up or sign in to vote.
Control that shows text and automatically finds and highlights hyperlinks (like http://, www. etc.) so that user can click on them.
<!-- Download Links --> <!-- Article image -->

Sample Image - hv.gif

<!-- Add the rest of your HTML here -->

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 <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, 
                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

Share

About the Author

Magomed Abdurakhmanov
Web Developer
Russian Federation Russian Federation
No Biography provided

Comments and Discussions

 
Generalerror with vs2005 wtl8 Pinmembergaoyh23-Sep-08 22:48 
GeneralHelp with headers Pinmemberxrigau15-Sep-03 20:21 
GeneralI added HTC_CENTER PinmemberPhlip30-Jan-03 10:46 
GeneralGreat control! But, at the risk of pedantry... PinmemberPhlip20-Nov-02 20:00 
GeneralRe: Great control! But, at the risk of pedantry... PinmemberMagomed G. Abdurakhmanov20-Nov-02 21:22 
GeneralRe: Great control! But, at the risk of pedantry... PinmemberMagomed G. Abdurakhmanov20-Nov-02 21:24 
GeneralRe: Great control! But, at the risk of pedantry... PinmemberMagomed G. Abdurakhmanov20-Nov-02 21:24 
GeneralRe: Great control! But, at the risk of pedantry... PinmemberPhlip21-Nov-02 8:14 
GeneralGreat control!! PinsussKronuz18-Oct-02 7:47 
I think this control is great, but it has only one missing thing.
Any idea how could I change it so I can select and copy the text on it?
GeneralRe: Great control!! PinmemberMagomed G. Abdurakhmanov19-Oct-02 23:31 
GeneralNice but.... Pinmemberloket21-Jun-02 12:02 
GeneralRe: Nice but.... PinmemberMagomed G. Abdurakhmanov22-Jun-02 7:22 
GeneralRe: Nice but.... PinmemberMagomed G. Abdurakhmanov23-Jun-02 2:05 
GeneralRe: Nice but.... PinmemberMagomed G. Abdurakhmanov23-Jun-02 4:26 
GeneralRe: Nice but.... PinmemberAnna-Jayne Metcalfe12-Jun-03 22:28 
Generalatlres.h is missing from the RES directory PinmemberMarat Bedretdinov30-Jun-01 11:34 
GeneralRe: atlres.h is missing from the RES directory PinmemberMagomed G. Abdurakhmanov2-Jul-01 6:52 

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

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

| Advertise | Privacy | Mobile
Web03 | 2.8.140821.2 | Last Updated 21 Jun 2002
Article Copyright 2001 by Magomed Abdurakhmanov
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid