MFC静态文本设置超链接
1.1MFC静态文本超链接介绍
用MFC开发软件时,有时候需要设置一个超链接并用其他颜色显示出来,且鼠标点击后跳转到指定的网页。
这时候可以设置一个静态文本,弄一个超链接。
1.2添加成员变量及初始化代码
在头文件中添加成员变量CRect m_rect;
在初始化函数OnInitDialog()中添加
1
2
|
GetDlgItem(IDC_STATIC_AUTHOR)->GetWindowRect(&m_rect);
ScreenToClient(&m_rect);
|
Note
GetDlgItem(IDC_STATIC_AUTHOR)里添加的是你的控件ID。目的在于获取到Static Text的矩形区域。
右键控件->类向导->消息->添加WM_LBUTTONUP事件,OnLButtonUp()函数实现如下
1
2
3
4
5
6
7
8
9
|
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, _T("网址"), NULL, NULL, SW_SHOWNORMAL);
}
CDialog::OnLButtonUp(nFlags, point);
}
|
1.4添加鼠标移动事件WM_MOUSEMOVE
添加方法如1.3,OnMouseMove()函数实现如下
1
2
3
4
5
6
7
8
9
10
|
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);
}
|
1.5添加WM_CTLCOLOR事件
同上,OnCtlColor()函数实现如下
1
2
3
4
5
6
7
8
9
10
11
12
13
|
HBRUSH CAntiHashDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何属性
if (pWnd->GetDlgCtrlID() == IDC_STATIC_AUTHOR)
{
// RGB里面填写你所需要的颜色的RGB值,例如红色的值是RGB(255,0,0)
pDC->SetTextColor(RGB(64,148,199));
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
|
Tip
现在,点击带颜色的静态文本就会跳转指定网页。