MFC组件Static Text 添加超链接 设置字体颜色
MFC组件Static Text 添加超链接 设置字体颜色从设置超链接的麻烦程度可见,MFC是多么的不灵活。
准备工作
头文件中添加成员变量:
CRect m_rect;
OnInitDialog()中添加:
GetDlgItem(IDC_STATIC_AUTHOR)->GetWindowRect(&m_rect);
ScreenToClient(&m_rect);
目的在于获取到Static Text的矩形区域
为Static Text添加超链接
对话框添加WM_LBUTTONUP(鼠标左键弹起)事件,OnLButtonUp()函数实现如下:
void CAntiHashDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
if (point.x>m_rect.left && point.x<m_rect.right&&point.y<m_rect.bottom&&point.y>m_rect.top)
{
ShellExecute(NULL,NULL,"http://www.longmagu.com/",NULL,NULL,SW_NORMAL);
}
CDialog::OnLButtonUp(nFlags, point);
}
如此点击Static Text的矩形区域就可以打开网页了。
使鼠标移至Static Text矩形区域变为手的形状
对话框添加WM_MOUSEMOVE(鼠标移动)事件,OnMouseMove()函数实现如下:
void CAntiHashDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if (point.x > m_rect.left && point.x < m_rect.right && point.y < m_rect.bottom && point.y > m_rect.top)
{
HCURSOR hCursor;
hCursor = ::LoadCursor ( NULL, IDC_HAND );
::SetCursor ( hCursor );
}
CDialog::OnMouseMove(nFlags, point);
}
设置字体颜色
超链接总该是蓝色,不然无法引起用户的注意啊。
对话框添加WM_CTLCOLOR事件,OnCtlColor()函数实现如下:
HBRUSH CAntiHashDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:在此更改 DC 的任何属性
if (pWnd->GetDlgCtrlID() == IDC_STATIC_AUTHOR)
{
pDC->SetTextColor(RGB(64,148,199));
}
// TODO:如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
页:
[1]