65.9K
CodeProject 正在变化。 阅读更多。
Home

CStatic 类的扩展应用 - CLabel 1.6

2000年1月12日

viewsIcon

451799

downloadIcon

11862

一个功能完备的自绘 CStatic 类

引言

是否曾希望静态控件能像 Visual Basic 标签控件一样?那么这可能正是您所寻找的。此版本添加了标签控件的所有功能,以及许多其他特性。该控件使用双缓冲技术,从而实现快速绘制。实际工作在 OnPaint 函数中完成。

我将这个类命名为 CLabel,在对话框中使用非常简单,只需按照这些简单的说明操作即可。

  1. 以正常方式设计对话框。
  2. 使用类向导创建 OnInitDialog 函数。
  3. 将 Label.cpp 和 Label.h 添加到您的项目中。
  4. 在您的对话框 .cpp 文件中 #Include <label.cpp>
  5. 删除项目 '.clw' 文件,然后通过打开项目并按 Ctrl+W 重新生成。
  6. 对于需要增强的任何静态控件,在对话框编辑器中为每个控件分配一个唯一的 ID。
  7. 使用类向导将每个成员控件 (CLabel) 分配给每个 ID。
  8. OnInitDialog 中使用 CLabel API 来更改控件的外观。

CLabel 的 API

CLabel& SetBkColor(COLORREF crBkgnd, 
                   COLORREF crBkgndHigh = 0
                   BackFillMode mode = Normal);
设置控件的背景颜色,并允许可选的渐变填充。
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 崩溃
© . All rights reserved.