Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 22:40:53
visual c++中静态文本控件(Static Text)

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); //背景透明

else

dc.SetBkMode(OPAQUE);

//重新绘制显示的文字

CRect StaticRect;

this->GetClientRect(&StaticRect);

CString sCaption;

this->GetWindowText(sCaption);

dc.DrawText(sCaption,&StaticRect,DT_LEFT|DT_WORDBREAK);

}

运行效果如图1所示。



图1 CExpandStatic类的应用




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759