15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Элемент управления - Гиперссылка.

Автор: Chris Maunder

  • Скачать демонстрационный проект - 22 Kb
  • Скачать исходник - 7 Kb

    CHyperLink example image

    Здесь представлен пример такого элемента управления как гиперссылка, который может быть встроен в любое диалоговое окно. Конечно подобных примеров существует множество, но в большинстве своём они использую обычный ShellExecute. В данном же примере используется функция GotoURL, плюс добавлена совместимость с юникодами.

    Изначально гиперссылка синего цвета, а при наведении на неё курсора мыши меняет свой цвет и, соответственно, после нажатия на ней курсором тоже. Курсор при попадании на ссылку, которую можно установить с помощью CHyperLink::SetLinkCursor, может менять свою форму, а также можно задавать различные цвета и подчёркивание. По умолчанию курсор меняет свою форму на ручку (курсор #106 из файла winhlp32.exe). Так же поддерживается всплывающая подсказка при наведении на ссылку.

    Ссылка имеет три режима подчёркивания, которые устанавливаются с помощью CHyperLink::SetUnderline:

    • CHyperLink::ulHover - Подчёркивание появляется, когда курсор наводится на ссылку
    • CHyperLink::ulNone - Подчёркивания нет
    • CHyperLinkulAlways - Ссылка всегда подчёркнута

    Для использования элемента управления - гиперссылка, создайте статический элемент управления (static control) (с названием IDC_HYPERLINK) и свяжите его с переменной типа CHyperLink. URL для ссылки берётся как caption для статического элемента управления.

    Изменение размеров и выравние производится путём использования флагов SS_CENTERIMAGE, SS_LEFT, SS_RIGHT и SS_CENTER .

    Операции для CHyperLink:

    void SetURL(CString strURL);   //Получаем и устанавливаем URL для ссылки
    CString GetURL();                 
    
    // Устанавливаем (и получаем) цвет ссылки(посещённой и непосещённой)
    void SetColours(COLORREF crLinkColour, COLORREF crVisitedColour
                    COLORREF crHoverColour = -1);                      
    COLORREF GetLinkColour();      
    COLORREF GetVisitedColour();      
    COLORREF GetHoverColour();      
    
    // Устанавливаем (и получаем) посещалась ли ссылка или нет      
    void SetVisited(BOOL bVisited = TRUE);      
    BOOL GetVisited();      
    
    void SetLinkCursor(HCURSOR hCursor);  // Устанавливаем курсор для ссылки
    
    // Устанавливаем (и получаем) подчёркивание ссылки      
    void SetUnderline(int nUnderline = CHyperLink::ulHover);      
    int GetUnderline();
    
    // Устанавливаем (и получаем) автоматический размер для текста caption
    void SetAutoSize(BOOL bAutoSize = TRUE);      
    BOOL GetAutoSize();