zoukankan      html  css  js  c++  java
  • MFC控件编程进度条编写

                      MFC控件编程进度条编写

    一丶进度条编程需要用到的方法

      进度条MFC已经帮我们封装好类了. 叫做 CProgressCtrl  进度条编程也很简单.

    封装的方法也就那个那几个.

      GetPos()  获取进度条位置

      SetPos()   设置位置.

      GetRange(Value,Value) 获取进度条的最大跟最小的值.

     等等.具体可以查询MSDN

    在讲解之前.需要简单讲解下定时器以及按钮.

    定时器:

      SetTimer() 设置定时器. 对话框相应 WM_TIMER消息即可.

      KillTimer() 取消定时器的设置.

      EnableWindow(TRUE or FALSE) 使控件可点击根不可点击.

    二丶MFC中进度条的控件编程.

      对于MFC控件编程.我们绑定一个变量. 初始化的时候设置最大跟最小值.

    例如:

      m_Pro.SetRange(0,100)  范围0 - 100

      按钮点击设置定时器. 此时对话框会接受WM_TIMER消息.我们响应消息.在里面控制进度条的进度.

    1.按钮点击下的代码.

    void CSpainDlg::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
        SetTimer(1, 100,NULL);  //设置100毫秒一次.ID为1
        GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);// 当按钮点击完成之后.变为禁止状态.
    }

    2.对话框初始化下的代码.初始化我们的进度条. 为它设置最大跟最小范围.

    m_pro.SetRange(0, 100);// 0 - 100

    3.对话框实现的WM_TIMER消息.当我们按钮设置了定时器.则这个消息回来.没100毫秒一次. 

     代码实现

    void CSpainDlg::OnTimer(UINT_PTR nIDEvent)
    {
        // TODO: 在此添加消息处理程序代码和/或调用默认值
    
        int nPos, nMin, nMax;
        m_pro.GetRange(nMin, nMax);//参数是引用类型.所以直接传入变量即可. 最大范围最小返回都会放到这两个变量中.
        nPos = m_pro.GetPos(); //获取当前进度条位置
        if (nPos >= nMax) //当前位置 > 100.也就是进度条的位置.
        {
            KillTimer(1); //结束定时器.
            nPos = 0;
            GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);//显示为可以点击
        }        
        nPos += 1; //每次进度条位置 + 1
        m_pro.SetPos(nPos); //设置进度条的位置
    
        CDialogEx::OnTimer(nIDEvent);
    }

    应用程序截图:

  • 相关阅读:
    HDU 5919 分块做法
    HDU 3333 分块求区间不同数和
    CF 333E 计算几何+bitset优化
    hdu 1043 八数码--打表
    hdu 1043 八数码问题-A*搜索
    hdu 5919 主席树
    hiho1388 FFT/NTT
    HDU 5869区间CGD不同种类数---树状数组+map统计区间不同种类数(离线)
    HDU 5875 二分+st表
    HDU 5898 基础数位DP
  • 原文地址:https://www.cnblogs.com/iBinary/p/9657780.html
Copyright © 2011-2022 走看看