Skip to main content
Email Password   helpLost your password?
  • Download demo project - 21 Kb
  • Download source - 7 Kb
  • CHyperLink example image

    This is a simple hyperlink control that can be plugged into any dialog. There are already a few examples of this in circulation (PJ Naughter, and one from Paul DiLascia from MSJ) but none had all the features that I wanted. I have used the GotoURL function by Stuart Patterson in the Aug 97 WDJ. It is more robust than a simple ShellExecute, and I have modified it to be a little more Unicode friendly.

    The hyperlink is initially coloured blue, but changes colour when the cursor is over it, and after the user has clicked on it. The cursor that appears when the mouse pointer is over the link can easily be set using CHyperLink::SetLinkCursor, as can the link colours and underlining. The default cursor is a small pointing hand (cursor #106 from the winhlp32.exe file - Thanks to Paul DiLascia of MSJ for that one). There is also a tooltip for the link that dispalys the underlying URL of the control.

    The link has three underline modes which are set using CHyperLink::SetUnderline:

    To use the hyperlink control, just create a static control (eg IDC_HYPERLINK) and attach it to a member variable of type CHyperLink. The URL for the link is taken as the caption of the static control unless otherwise specified. If no caption for the control is specified then it is set as the URL. If neither exists, then a debug assertion occurs.

    The control can auto-size itself to fit the size of the caption (to preserve a true hyperlink look and feel). The resizing will honour the SS_CENTERIMAGE, SS_LEFT, SS_RIGHT and SS_CENTER flags.

    The control is very simple. The button click and colour notifications are handled by the control, and appropriate fonts and colours selected according to the state of the link. The only tricky bit is handling the button click. In order to do this the static control must have the SS_NOTIFY bit set and a ON_CONTROL_REFLECT handler for the STN_CLICKED message is installed.

    To actually follow the link, ShellExecute is called to open the URL, but if this fails, then the registry is examined in order to find a likely candidate for .htm files. If one is found then this it is launched with the hope that it can handle the URL string supplied. In any case, an error message is displayed on failure.

    Operations for CHyperLink:

    void SetURL(CString strURL);      // Get and set the target URL for the link
    
    CString GetURL();                 
    
    // Set (and get) the Link (unvisited and unvisited) colours      
    
    void SetColours(COLORREF crLinkColour, COLORREF crVisitedColour
                    COLORREF crHoverColour = -1);                      
    COLORREF GetLinkColour();      
    COLORREF GetVisitedColour();      
    COLORREF GetHoverColour();      
    
    // Set (and get) whether or not the link has been visited      
    
    void SetVisited(BOOL bVisited = TRUE);      
    BOOL GetVisited();      
    
    void SetLinkCursor(HCURSOR hCursor);      // Set the cursor for the link      
    
    
    // Set (and get) whether or not ot underline the link)      
    
    void SetUnderline(int nUnderline = CHyperLink::ulHover);      
    int GetUnderline();
    
    // Set (and get) whether to autosize the control to fit the caption text      
    
    void SetAutoSize(BOOL bAutoSize = TRUE);      
    BOOL GetAutoSize();
    

    Note on SetColour: This allows the unvisited/visited and hover colours to be specifed. If the Hover colour (the colour the link appears when the cursor is over it) is -1, then the system highlight colour is used.

    History

    29 Feb 2000 - P. Shaffer standard font modification

    You must Sign In to use this message board.
     
     
    Per page   
     FirstPrevNext
    GeneralRerouting the click message. Pin
    Kyudos
    16:26 25 Nov '08  
    GeneralRe: Rerouting the click message. [modified] Pin
    Member 1286240
    6:49 1 Apr '09  
    GeneralRe: Rerouting the click message. Pin
    Kyudos
    16:37 7 Oct '09  
    GeneralRegarding Example Pin
    Hemang Raval
    2:11 17 May '08  
    GeneralGreetings Pin
    proximuss
    8:02 16 Mar '07  
    GeneralDear Chris, I used yours convenient Hyperlink control which is proposed to be commercial but Pin
    vitsavinov
    3:22 26 Sep '06  
    GeneralCHyperLink to open in Firefox Pin
    mail4johnv
    21:46 7 Jun '06  
    QuestionDynamic create a Hyperlink control Pin
    unionize
    21:04 22 Apr '06  
    Generalfew fixes Pin
    Andrew K
    10:12 22 Apr '05  
    GeneralRe: few fixes Pin
    lano1106
    16:25 8 Nov '05  
    GeneralCtlColor not firing Pin
    Sanatforu
    1:29 9 Feb '05  
    GeneralCompile error: Cannot open include file: 'atlconv.h' Pin
    dxchen
    4:18 24 Mar '04  
    Generalwithout using MFC Pin
    maharsoft
    3:03 6 Jan '04  
    GeneralRe: without using MFC Pin
    lano1106
    13:00 17 Nov '05  
    GeneralPerfect Pin
    William Brendel
    17:47 7 Jun '03  
    GeneralRe: Perfect Pin
    Ed Deighton
    19:39 24 Aug '03  
    GeneralDefault Hand cursor Pin
    Zorglab
    23:35 16 Apr '03  
    GeneralRedraw Pin
    Rage
    21:19 31 Mar '03  
    Generalhow to do it w/out class-wizard/mfc? Pin
    morgler
    2:24 21 Nov '02  
    GeneralCHyperLink is already part of WTL 7.0 Pin
    Anonymous
    2:31 12 Jul '02  
    GeneralHyperlink in a textbox? Pin
    Anonymous
    22:17 25 Jun '02  
    GeneralHyperlink control in a dialog bar or in a Toolbar!? Pin
    Khlauster
    10:25 2 Jun '02  
    Generalhow to do this? Pin
    kalpana
    23:02 20 Mar '02  
    GeneralRe: how to do this? Pin
    chandubai
    1:07 1 Aug '02  
    GeneralUse SetCapture iso Timer Pin
    CK Lam
    13:52 11 Mar '02  


    Last Updated 22 Mar 2000 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009