创建自绘进度条,并在进度条上显示当前进度的百分比

平台:VS2005;

资料参考:来源于网络;

内容介绍:创建自绘进度条,并在进度条上显示当前进度的百分比。

第一步:创建基于对话框的工程,在对话框中放置一个进度条控件,

把进度条控件的属性Smooth设置为真。

第二步:

【1】添加基于进度条CProgressCtrl控件新类CMyProCtrl;

【2】为CMyProCtrl类添加WM_PAINT消息

【3】为CMyProCtrl类添加public变量如下:

COLORREF m_ColText;//文本颜色

COLORREF m_ColProgress;//进度条颜色

COLORREF m_ColBlank;//空白区域颜色

【4】在CMyProCtrl类构造函数中初始化变量:

m_ColText=RGB( 255, 0, 0);//文本颜色

m_ColProgress=RGB( 0, 255, 255);//进度条颜色

m_ColBlank=RGB( 192, 192, 192);//空白区域颜色

【5】在CMyProCtrl类OnPaint()中添加:

PAINTSTRUCT ps;//声明一个绘画区域

CDC *pDC=BeginPaint(&ps);//把绘画区域选入设备上下文并开始

int AdrPos=GetPos();//获取进度条的进度位置

CString StrPos;//声明字符串,用于显示进度条的进度

StrPos.Format ("%d%%",AdrPos);//把进度位置复制到StrPos

CRect ClientRC;

GetClientRect(&ClientRC);//获取客户区矩形

CSize CsText=pDC->GetTextExtent (StrPos);//获取显示StrPos的规模大小

int nX=(ClientRC.Width ()-CsText.cx )/2;//获取显示字符串的X

int nY=(ClientRC.Height ()-CsText.cy )/2;//获取显示字符串的Y

pDC->SetBkMode (TRANSPARENT);//设置背景模式为透明

int nMin,nMax;//声明进度条的最大最小限制

GetRange(nMin,nMax);//获取限制

double Every=(double)ClientRC.Width ()/(nMax-nMin);//获取单位刻度

int Now=Every*AdrPos;//当前长度

CRect LeftRC,RightRC;//声明进度条区域和空白区域

LeftRC=RightRC=ClientRC;

LeftRC.right =Now;//进度条区域

RightRC.left =Now;//空白区域

pDC->FillRect (LeftRC,&(CBrush)m_ColProgress);//画进度条区域

pDC->FillRect (RightRC,&(CBrush)m_ColBlank);//画空白区域

pDC->SetTextColor (m_ColText);//设置文本颜色

pDC->TextOutA (nX,nY,StrPos);//写文本

ReleaseDC(pDC);//销毁设备上下文

EndPaint(&ps);//结束绘画区域绘画

【6】把在CMyProCtrl类的头文件包含到对话框程序中;给进度条控件添加基于CMyProCtrl类的变量:m_ProCtrl

【7】为对话框程序添加WM_TIMER消息

SetTimer(1,100,NULL);

//在对话框程序初始化函数中开启时钟

在对话框程序OnTimer(UINT_PTR nIDEvent)中添加:

int NowPos=m_Progress.GetPos();//获取当前进度

m_Progress.SetPos (NowPos+1);//设置进度

【8】拓展:若要用位图绘画进度条,只需把CMyProCtrl类中的画刷换成位图画刷。

pDC->FillRect (LeftRC,&(CBrush)m_ColProgress);//画进度条区域

pDC->FillRect (RightRC,&(CBrush)m_ColBlank);//画空白区域

效果图:

MFC进度条的美化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值