Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)qqpublished in(发表于) 2014/7/9 22:40:53 visual c++中静态文本控件(Static Text)
静态文本控件(Static Text)1.概述静态控件是用来显示一个文本串控件的。默认情况下,所有静态文本控件的ID都为IDC_STATIC,如果需要为静态文本控件添加消息处理函数,需要重新指定一个惟一的ID值。编程时用得最多的就是静态文本控件,每一个静态控件都可以显示255个字符,如果有需要,读者也可以使用换行符“n”。2.扩展的静态文本控件类静态文本框足可以应付大多数应用程序开发的需要,但对于某些特殊的需要,就显得无能为力了。笔者对CStatic的原有功能进行扩展,新静态文本控件类支持透明、设置字体颜色等实用功能。分析:这两个问题可以利用OnPaint()函数来解决,OnPaint是WM_PAINT的消息响应函数,通过重载这个消息响应函数可以重新绘制静态文本。类原型如下: class CExpandStatic : public CStatic{public:CExpandStatic();void Transparence(bool bTran); //设置是否透明void SetFontColor(COLORREF Color); //设置字体颜色virtual ~CExpandStatic();private:bool m_Transparence; //记录是否透明的变量COLORREF m_Color; //记录颜色的变量};Transparence函数和SetFontColor函数实际只是设置两个私有成员m_Transparence和m_Color的值,它们的实现如下:void CExpandStatic::SetFontColor(COLORREF Color){m_Color=Color;}void CExpandStatic::Transparence(bool bTran){m_Transparence=Transparence;}为了达到背景透明及设置颜色的目的,必须重载消息响应函数OnPaint(): void CExpandStatic::OnPaint(){CPaintDC dc(this);//设置字体CFont* pfont;pfont=this->GetFont();dc.SelectObject(pfont);dc.SetTextColor(m_Color); //设置字体颜色if(m_Transparence==true)dc.SetBkMode(TRANSPARENT); //背景透明elsedc.SetBkMode(OPAQUE);//重新绘制显示的文字CRect StaticRect;this->GetClientRect(&StaticRect);CString sCaption;this->GetWindowText(sCaption);dc.DrawText(sCaption,&StaticRect,DT_LEFT|DT_WORDBREAK);}运行效果如图1所示。图1 CExpandStatic类的应用
赞