前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MFC控件编程进度条编写

MFC控件编程进度条编写

作者头像
IBinary
发布2019-05-25 16:48:15
2.9K1
发布2019-05-25 16:48:15
举报
文章被收录于专栏:逆向技术逆向技术

                  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.按钮点击下的代码.

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

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

代码语言:javascript
复制
m_pro.SetRange(0, 100);// 0 - 100

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

代码实现

代码语言:javascript
复制
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);
}

应用程序截图:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •                   MFC控件编程进度条编写
    • 一丶进度条编程需要用到的方法
      • 二丶MFC中进度条的控件编程.
        • 1.按钮点击下的代码.
        • 2.对话框初始化下的代码.初始化我们的进度条. 为它设置最大跟最小范围.
        • 3.对话框实现的WM_TIMER消息.当我们按钮设置了定时器.则这个消息回来.没100毫秒一次.
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档