创建超链接静态控件
步骤 1
创建一个新类CLinkStatic,设置基类为CStatic。
步骤 2
为新类添加成员变量
COLORREF m_textcr //文本颜色
CFont m_font; //记录连接控件文本的字体
LOGFONT m_lf; //逻辑字体
HCURSOR m_handcur //手型鼠标句柄
CBrush m_brush; //设置控件画刷
CString m_linkurl; //超链接地址
BOOL m_bmouseover //鼠标是否在连接上,用来设置是否有下划线
BOOL m_bLink; //是否显示为超链接
步骤 3
添加成员函数
void SetLink(BOOL bLink);
void SetLinkUrl(CString url);
void SetFontUnderline(BOOL bSet=FALSE);
void SetTextColor(COLORREF crText);
void SetFont(int nFont); //设置字体大小
每个成员函数实现过程中都要加上控件重绘命令 RedrawWindow()来实现控件的重绘;
在SetLinke()函数中,要调用ModifyStyle()函数,是静态控件能够接受和发送消息。
步骤 4
为新类添加消息响应函数
WM_MOUSEMOVE 鼠标移动时设置计时器SetTimer(1,10,NULL)
WM_TIMER 判断鼠标是否在在控件上,一次来设置m_bmouseover的值
WM_SETCURSOR 当鼠标在控件上时,载入手型光标
WM_LBUTTONDOW 鼠标左键按下,如果m_bmouseover为真,执行超链接
=WM_CTLCOLOR 在其中设置控件的字体,颜色和模式(与WM_CTLCOLOR区别开)这里是关键
步骤 5
在要是用超链接静态控件的类的头文件中加入静态控件的定义(修改一个控件的ID为IDC_LINKSTATIC之后,才能在WinWizard中设置关联,并且只能设置一个。不知道为什么?)
之后,会有显示 CLinkStatic m_static1;
若有多个超链接标签,可能就需要手动添加,如:CLinkStatic m_static2;
并且在所要加入的类中的DoDataExchange中加入
DDX_Control(pDX, IDC_LINKSTATIC, m_static2);
步骤 6
在类的实现过程中,调用成员函数实现对连接标签的初始化即可。
要点:
1.每个成员函数实现过程中都要加上控件重绘命令 RedrawWindow()来实现控件的重绘;
2.在SetLinke()函数中,要调用ModifyStyle()函数,是静态控件能够接受和发送消息
3.使用=WM_CTLCOLOR消息来改变控件的样式,而不能用WM_CTLCOLOR
4.在实现过程中,可以在WM_CTLCOLOR中使用hbr=pDC->GetStockObject(NULL_BRUSH)来设置控件背景画刷为空,以达到和主窗口背景融合一体的效果。