I use an owner-drawn button and the following code:
Code:void CAboutDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { if (nIDCtl==IDC_LINK) { CString strURL; GetDlgItem(IDC_LINK)->GetWindowText(strURL); COLORREF cr = lpDrawItemStruct->itemState & ODS_SELECTED ? RGB(255,0,0) : RGB(0,0,255); CRect rcItem = lpDrawItemStruct->rcItem; rcItem.top += 2; CDC dc; dc.Attach(lpDrawItemStruct->hDC); CPen pen(PS_SOLID, 1, cr); CPen* pOld = dc.SelectObject(&pen); dc.SetTextColor(cr); dc.DrawText(strURL, &rcItem, DT_CALCRECT | DT_SINGLELINE); dc.DrawText(strURL, &rcItem, DT_SINGLELINE); dc.MoveTo(rcItem.left, rcItem.bottom); dc.LineTo(rcItem.right, rcItem.bottom); dc.SelectObject(pOld); dc.Detach(); } } BOOL CAboutDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { if (pWnd->GetDlgCtrlID()==IDC_LINK) { if (HCURSOR hCurs = LoadCursor(NULL, MAKEINTRESOURCE(32649))) { SetCursor(hCurs); return TRUE; } } return CDialog::OnSetCursor(pWnd, nHitTest, message); }




Reply With Quote