Скачать исходник - 7 Kb
Здесь представлен пример такого элемента
управления как гиперссылка, который может быть
встроен в любое диалоговое окно. Конечно
подобных примеров существует множество, но в
большинстве своём они использую обычный 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();