MFC 静态文本设置超链接
1.1 MFC 静态文本超链接介绍
用 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
现在,点击带颜色的静态文本就会跳转指定网页。