- 注册时间
- 2021-4-16
- 最后登录
- 2024-7-7
- 在线时间
- 4 小时
编程入门
- 龙马币
- 22
|
MFC组件Static Text 添加超链接 设置字体颜色
从设置超链接的麻烦程度可见,MFC是多么的不灵活。
准备工作
头文件中添加成员变量:
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;
- }
复制代码
|
|