#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)
}
或者采用在某种循环体内添加不断更新进展条界面的方法
以Dialog为例简单说明一下:
在Dialog上添加Progress Control控件, 关联控件变量为m_progress_demo
在Dialog所属的类的OnInitDialog()函数里面(新类的话需要手工添加OnInitDialog()函数), 增加初始化处理: m_progress_demo.SetRange(0, 100)m_progress_demo.SetPos(0)表示显示的进度为0~100之间,而且进度从0开始。
在需要进度条更新的场合下,比如进度20,增加:m_progress_demo.SetPos(20)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)