原作者地址及最新更新:
http://www.codeproject.com/Articles/215/Extended-Use-of-CStatic-Class-CLabel-1-6
本控件可以实现类似VB中LABEL控件的功能。可能正是许多人寻找已久的.本版本已具备了LABEL控件所有的函数.并且在此基础上支持了许多额外的功能.本控件运用双缓存技术,可以使绘制更快。功能主要在OnPaint函数中执行。
原作者为这款控件取名为CLABLE,并且编制了如下简要介绍.遵照下法,即可很简便的使用本控件.
1. 新建项目:在VC6中用MFC新建一个基于对话框的TestStaticLabel项目,并在对话框中加入控件如图所示,为每一个静态文本设置不同的ID。
2.在项目中插入类文件:把所有label.cpp和label.h文件copy 到项目文件夹下,Project->Add to Project->Files中选上label.cpp和label.h文件, OK; 怎么样,在ClassView中看到了CLabel类吧。 打开ClassWizard若看不到CLabel类,可关闭ClassWizard(不用关闭VC),在项目文件夹下把TestSaticLabel.clw文件删除,再打开ClassWizard,会看到提示:"The classwizard database doesn't exist,.....,would you like to build it from your source files?",选Yes,出现一个对话框,单击 Add All,再单击OK,好了,在ClassWizard中可以看到CLabel类了。
3.为每个要改变设置的static静态文本增加ddx控制变量:在对话框头文件TestSaticLabelDlg.h中加入 #include "label.h";打开ClassWizard,选Member Variables页,选上相应的静态文本ID,单击Add Viriable,在对话框中Category中选control,variable Type选clabel,Variable Name由你自己定吧。(把要改变的ID都加上DDX控制变量)
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) |
为控件设置 Italic 字体 |
CLabel& SetFontSize(int nSize) |
设置控件的字体大小 |
CLabel& SetSunken(BOOL bSet) |
设置控件的 凹陷 效果 |
CLabel& SetBorder(BOOL bSet) |
设置控件的边框 |
CLabel& FlashText(BOOL bSet) |
设置控件 文字的闪烁效果 |
CLabel& FlashBackground(BOOL bSet) |
设置控件背景的闪烁效果 |
CLabel& SetLink(BOOL bLink) |
设置控件的超级链接.可以链接网址 |
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) |
为3D文本设置高亮颜色效果 |
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);