如何用C语言实现进度条

我学校课程设计用,在网上找了半天没有哪位哥哥能给做出来帮忙传下,只能用C做哦,C++都不可以最好是原代码,我对C不是很明白,麻烦了有高手没啊?... 我学校课程设计用,在网上找了半天没有哪位哥哥能给做出来帮忙传下,只能用C做哦,C++都不可以
最好是原代码,我对C不是很明白,麻烦了
有高手没啊?
展开
 我来答
tattackor
推荐于2017-10-02 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:889万
展开全部
  1.  第一种,用printf模拟输出百分比,在控制台输出,实现进度监控。

    代码:

    #include<stdio.h>
    #define N 20
    void mBar(float fBar){
     
        int i,j,k,m;
        for ( i=0;i<N+6;i++ ) printf("\b");
        k=N*fBar; m=fBar*100; printf("[");
        for ( i=0;i<k;i++ ) printf("=");
        for ( j=0;j<N-k;j++ ) printf(" ");
        printf("]%3d%%",m); 
    }
    void delay(int n) { int i,j,k; for ( i=0;i<n;i++ ) for ( j=0;j<0x07fff;j++ ) k++; }
    void main()
    {
        float x;
        int i;
        for ( i=0,x=0;i<100;i++,x+=0.01 ) { mBar(x); delay(1024); }
        mBar(1);
    }
  2. 第二种,使用窗口组件。这个要看程序工作环境,纯粹的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);
    }
    或者采用在某种循环体内添加不断更新进展条界面的方法

hglg1979
推荐于2017-09-18 · TA获得超过1074个赞
知道小有建树答主
回答量:1274
采纳率:0%
帮助的人:689万
展开全部
CreateWindow(PROGRESS_CLASS,NULL, WS_VISIBLE|WS_CHILD|PBS_SMOOTH, 20, 370, 370, 30, hwnd, (HMENU)200, ((LPCREATESTRUCT)lParam)->hInstance,NULL);

相关消息
PBM_GETPOS 得到当前位置
PBM_SETPOS 设置当前位置并重画,指向这个位置
PBM_GETRANG 得到进度条范围
PBM_SETRANG 设置进度条范围
PBM_SETRANG32 设置进度条范围
PBM_SETSTEP 设置步进长度
PBM_STEPIT 执行步进

详细内容得看MSDN.

c 语言的话基本就是WIN32 SDK了,翻MSDN吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式