CStatic 类的扩展应用 - CLabel 1.6






4.91/5 (57投票s)
2000年1月12日

451799

11862
一个功能完备的自绘 CStatic 类
- 下载演示可执行文件和项目 - 52 Kb (v1.6 2002 年 8 月)
- 下载 CLabel 源代码 - 8 Kb (v1.6 2002 年 8 月)
引言
是否曾希望静态控件能像 Visual Basic 标签控件一样?那么这可能正是您所寻找的。此版本添加了标签控件的所有功能,以及许多其他特性。该控件使用双缓冲技术,从而实现快速绘制。实际工作在 OnPaint
函数中完成。
我将这个类命名为 CLabel
,在对话框中使用非常简单,只需按照这些简单的说明操作即可。
- 以正常方式设计对话框。
- 使用类向导创建
OnInitDialog
函数。 - 将 Label.cpp 和 Label.h 添加到您的项目中。
- 在您的对话框 .cpp 文件中
#Include <label.cpp>
。 - 删除项目 '.clw' 文件,然后通过打开项目并按 Ctrl+W 重新生成。
- 对于需要增强的任何静态控件,在对话框编辑器中为每个控件分配一个唯一的 ID。
- 使用类向导将每个成员控件 (
CLabel
) 分配给每个 ID。 - 在
OnInitDialog
中使用CLabel
API 来更改控件的外观。
CLabel 的 API
CLabel& SetBkColor(COLORREF crBkgnd, |
设置控件的背景颜色,并允许可选的渐变填充。 |
CLabel& SetText(const CString& strText) |
设置控件的文本 |
CLabel& SetTextColor(COLORREF crText) |
设置控件的文本颜色 |
CLabel& SetFontBold(BOOL bBold) |
切换控件中文本的粗体属性状态 |
CLabel& SetFontName(const CString& strFont) |
设置控件的字体名称 |
CLabel& SetFontUnderline(BOOL bSet) |
切换控件的下划线字体属性状态 |
CLabel& SetFontItalic(BOOL bSet) |
切换控件的斜体字体属性状态 |
CLabel& SetFontSize(int nSize) |
设置字体大小,单位为点。 |
CLabel& SetSunken(BOOL bSet) |
切换控件的凹陷属性状态 |
CLabel& SetBorder(BOOL bSet) |
切换边框属性状态 |
CLabel& FlashText(BOOL bSet) |
切换文本闪烁属性状态 |
CLabel& FlashBackground(BOOL bSet) |
切换文本闪烁属性状态 |
CLabel& SetLink(BOOL bLink) |
切换链接属性状态(允许标签变成 Internet 链接) |
CLabel& SetLinkCursor(HCURSOR hCursor) |
设置链接的鼠标指针。 |
CLabel& SetTransparency(BOOL bTransparency) |
设置背景的透明度。 |
CLabel& SetFont3D(BOOL bSet,Type3D type) |
设置 3D 字体 |
CLabel& SetRotationAngle(UINT nAngle,BOOL bRotation) |
设置字体的旋转角度 |
CLabel& SetText3DHiliteColor(COLORREF cr3DHiliteColor) |
设置文本的突出显示颜色 |
CLabel& SetMailLink(BOOL bEnable, BOOL bNotifyParent) |
设置文本的突出显示颜色 |
使用示例
m_fname.SetFontName("System"); m_fsize.SetFontSize(14); m_uline.SetFontUnderline(TRUE); m_tcolor.SetTextColor(RGB(255,0,0)); m_bcolor.SetBkColor(RGB(0,255,255)); m_italics.SetFontItalic(TRUE); m_bold.SetFontBold(TRUE); m_border.SetBorder(TRUE); m_sunken.SetSunken(TRUE); m_lblGradient.SetBkColor(RGB(255,255,255),RGB(0,0,255), CLabel::Gradient); m_monty.SetFontName("Arial"); m_monty.SetFontSize(12); m_monty.SetTextColor(RGB(255,255,0)); m_monty.SetFontUnderline(TRUE); m_monty.SetBkColor(RGB(0,0,0)); m_monty.SetFontItalic(TRUE); m_monty.SetFontBold(TRUE); m_monty.SetBorder(TRUE); m_monty.SetSunken(TRUE);
历史
CLabel 版本 1.6
- Jeroen Roosendaal - SetFont 建议
- Laurent - 发现 SelectObject 错误
- Bernie - 修复 PreCreateWindow 错误
- Jignesh I. Patel - 添加了扩展标签功能
- Jim Farmelant - 修复 SetText 崩溃