如何用MFC做一个进度条

如何用MFC做一个进度条,第1张

第一种,用printf模拟输出百分比,在控制台输出,实现进度监控。

#include<stdio.h>

#define N 20

void mBar(float fBar){

int i,j,k,m

for ( i=0i<N+6i++ ) printf("\b")

k=N*fBarm=fBar*100printf("[")

for ( i=0i<ki++ ) printf("=")

for ( j=0j<N-kj++ ) printf(" ")

printf("]%3d%%",m)

}

void delay(int n) { int i,j,kfor ( i=0i<ni++ ) for ( j=0j<0x07fffj++ ) k++}

void main()

{

float x

int i

for ( i=0,x=0i<100i++,x+=0.01 ) { mBar(x)delay(1024)}

mBar(1)

}

第二种,使用窗口组件。这个要看程序工作环境,纯粹的c语言是无法实现的。可以使VC++。Visual C++中的MFC类提供了标准的进度指示器控件(CProgressCtrl)。

m_progress->GetPos()//获取进度条的当前位置

m_progress->GetRange(int min,int max)//获取进度条控件的范围的下限和上限

m_progress->OffsetPos(int nPos)//用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置

m_progress->SetBkColor(COLORREF clrNew)//设定进度条的背景颜色

m_progress->SerPos(int nPos)//设定进度条控件的当前位置,重绘进度条反映新位置

m_progress->SetRange(int min,int max)//设定进度条控件的范围的下限和上限

m_progress->SetRange32(int min,int max)//设定进度条控件的范围的下限和上限

m_progress->SetStep(int nStep)//指定进度条控件的步进增量

m_progress->StepIt()//通过步进增量,推进进度条控件的当前位置,重绘进度条反映新位置

应用:

CProgressCtrl *m_progress//头文件中声明

在OnInitDialog初始化

{

m_progress = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1)

m_progress->SetRange(0,1000)

m_progress->SetPos(0)

UINT m_timer =(UINT) SetTimer(1,200,NULL)

}

采用在定时器的消息处理函数WM_TIMER内添加不断更新进度条界面的方法

OnTimer (nIDEvent)

{

pos = pos + 50

if(pos>500)

pos = 0

m_Progress->SetPos(pos)

}

或者采用在某种循环体内添加不断更新进展条界面的方法

1.从简单易用角度讲,用Dialog比较好。单文档的话,楼主可能找不到吧控件拖到哪里去。而且单文档有框架类和视图类,要在视图类里改,不要在框架类里面改。

2.Dialogue的话,看你的需要了。在controls框里面拖一个列表控件。然后用classwizard添加一个control型成员m_list。对控件的 *** 作,可以通过 *** 作这个成员来实现。

3.楼主会发现,有3个类,一个是aboutdlg,这个是显示版本信息的对话框,不用管。

一个是C**App类,是应用程序类,程序就是从这里执行的,对于现在的问题,可以不用管。

还有一个是C**Dlg类,这个就是我们的dialogue窗口类,就修改这里。

4.这个类里面好多函数,如果楼主希望在对话框d出来时就有列表控件出现,并分好格子,那么,要修改它的成员函数OnInitDialog。这个函数看名字就知道是初始化对话框的。

可以在这个里面 *** 作m_list成员,来调整列表控件。

5. *** 作的具体过程呢,我这里不写太详细,说的多了反而影响学习,楼主可以自己看MSDN里面CListCtrl的成员函数,不难,找几个看的懂的试下就知道了,我也写几个:

GetItemText()得到一个条目的文本

SetItemTex:设置一个条目的文本

InsertItem:插入一个新条目

DeleteItem:删除一个新条目

等等,等等,说不尽啊,请自己看一下,不难的。

6.说到list控件,脑子里一下子出现好多东西,如在列表里面加个check功能,改个颜色,放个按钮,进度条等等,哎呀,太多了,不知道从何说起。

7.很多VC,mfc方面的书,都会在一开始描述控件的使用,楼主可以随便找一本,或者网上下一本,一步一步跟着做一次,这个东西就不会陌生了。楼主这个阶段,可能看MSDN比较困难,因为,毕竟还不是很了解VC里面MFC的各种结构,建议找本书看,入门的话,推荐孙鑫的《VC++深入详解》带视频的。

8.有问题可以发消息给我。我一般中午,晚上会在线2个小时解答问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11891460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存