VC MFC进程条(CProgressCtrl)控件
来源:互联网 发布:刷枪软件手机版 编辑:程序博客网 时间:2024/06/05 10:51
VC MFC进程条(CProgressCtrl)控件
CProgressCtrl类里相关函数介绍
void CProgressCtrl::SetRange( short nLower, short nUpper );//设置进程条上下限(范围)
int CProgressCtrl::GetPos();//获取进程条位置
int CProgressCtrl::SetPos( int nPos );//设置进程条位置
void CProgressCtrl::GetRange( int& nLower, int& nUpper );//获得进程条上下限
自绘进程条控件
首先得准备两张图片,如下图:
背景
前景
导入这两张位图到工程,ID号分别为IDB_BK IDB_FE;
从CProgressCtrl派生出子类CNewProgressCtrl,然后给对话框添加进程条控件,关联变量m_ProgressCtrl(类型:CNewProgressCtrl),接着给子类添加WM_PAINT消息处理函数,该函数代码如下:
void CNewProgressCtrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(rect);
CRect strRect=rect;//文字区域
int nPos=GetPos();
int nMin,nMax;
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap bmp;
bmp.LoadBitmap(IDB_BK);
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
memDC.SelectObject(&bmp);
dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,
bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);//画背景
GetRange(nMin,nMax);
double ratio=(double)rect.Width()/(nMax-nMin);
rect.right=nPos*ratio;//计算进程条当前宽度
bmp.DeleteObject();
bmp.LoadBitmap(IDB_FE);
bmp.GetBitmap(&bmpInfo);
memDC.SelectObject(&bmp);
dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,
rect.Width(),rect.Height(),SRCCOPY);//画前景
bmp.DeleteObject();
double hratio=nMax/(double)100;
int hPos=nPos/hratio;//计算百分比值
CFont Font;
Font.CreatePointFont(150,"宋体");
dc.SelectObject(&Font);
dc.SetTextColor(RGB(255,255,255));
CString str;
str.Format("%d%%",hPos);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(str,strRect,DT_VCENTER|DT_CENTER);
memDC.DeleteDC();
Font.DeleteObject();
// TODO: Add your message handler code here
// Do not call CProgressCtrl::OnPaint() for painting messages
}
给对话框类添加WM_TIMER(计时器)消息处理函数,这里设置进程条位置,每隔一段时间。该函数代码如下:
void CSeventhDlg::OnTimer(UINT nIDEvent)
{
static int i=0,nMin,nMax;
if(i==0)
m_ProgressCtrl.GetRange(nMin,nMax);
// TODO: Add your message handler code here and/or call default
m_ProgressCtrl.SetPos(i);
i++;
if(i>nMax)
{
KillTimer(1001);
MessageBox("已完成");
}
//CDialog::OnTimer(nIDEvent);
}
对话框初始化函数添加代码如下:
m_ProgressCtrl.SetRange(0,130);
SetTimer(1001,100,NULL);
运行效果:
- VC MFC进程条(CProgressCtrl)控件
- MFC-CProgressCtrl进度条控件
- CProgressCtrl控件 VC++
- MFC----windows控件----进度条控件(CProgressCtrl)
- VC MFC滚动条(CScrollBar)控件
- VC MFC滚动条(CScrollBar)控件
- MFC进度条控件CProgressCtrl实现进度滚动效果
- MFC 之进度条CProgressCtrl
- MFC 之进度条CProgressCtrl
- MFC 之进度条CProgressCtrl
- 控件使用--CProgressCtrl
- 控件 CProgressCtrl 进度条
- [VC/MFC]滑动动条控件Slider的用法
- [VC/MFC]滑动动条控件Slider的用法
- [VC/MFC]滑动动条控件Slider的用法
- vc++ MFC-CListCtrl控件的16条常用操作
- [VC/MFC]滑动动条控件Slider的用法
- [VC/MFC]滑动动条控件Slider的用法
- VB Picture不能显示全部图片怎么办?
- linux platform 驱动模型分析
- uva 10250 - The Other Two Trees
- 怎样才能做好技术团队管理
- 服务管理
- VC MFC进程条(CProgressCtrl)控件
- C++中数学函数的使用方法.doc
- C++常见编译错误分析总结
- android学习笔记---57前准备:认识android设备中的传感器
- Machine Learning week 3 programming exercise logistic regression
- hadoop mapreduce 学习(-)
- BS架构与CS架构的区别是什么?
- Android编译并运行launcher2
- C语言变量的存储方式 ——auto,register,static关键字