霸道小明 2022-07-08 13:28 采纳率: 57.1%
浏览 31
已结题

MFC进度条控件不变化

问题遇到的现象和发生背景

MFC进度条控件不变化

问题相关代码,请勿粘贴截图

在Dlg.h文件中定义了一个定时器

#define TIME_PROC 9527

在Dlg.cpp文件中的OnInitDialog()函数添加了

    //设置进度条范围
    CProgressCtrl* proc = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
    proc->SetRange(0, 100);
    //设置一个定时器
    SetTimer(TIME_PROC, 100, NULL);

给Dlg添加了WM_TIMER事件

void CdialogDlg::OnTimer(UINT_PTR nIDEvent)
{
    
    int num;//记录进度条当前位置
    int low, height;//记录进度条的最大值和最小值
    CProgressCtrl* proc;
    //一个程序中可能有多个定时器,根据定时器ID做出相应的操作
    switch (nIDEvent) {
    case TIME_PROC:
        proc = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
        //获取当前进度
        num = proc->GetPos();
        //每超出定时器时限时就+1
        proc->SetPos(num++);
        //先获取进度条的最小值和最大值
        proc->GetRange(low, height);
        //判断是否超出最大值
        if (num >> height) {
            //超出则让进度条重新跑
            proc->SetPos(low);
        }
        break;

    }
    CDialogEx::OnTimer(nIDEvent);
}
运行结果及报错内容

但是我调试后那个进度条就一直这个样子,根本不动。我又加入了断点,发现那个获得进度条进度的值一直是0

img

img


这是为啥哦/(ㄒoㄒ)/~~

展开全部

  • 写回答

1条回答 默认 最新

  • 五一编程 2022-07-08 13:34
    关注
    
    void CdialogDlg::OnTimer(UINT_PTR nIDEvent)
    
    {
    
        
    
        int num;//记录进度条当前位置
    
        int low, height;//记录进度条的最大值和最小值
    
        CProgressCtrl* proc;
    
        //一个程序中可能有多个定时器,根据定时器ID做出相应的操作
    
        switch (nIDEvent) {
    
        case TIME_PROC:
    
            proc = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);
    
            //获取当前进度
    
            num = proc->GetPos();
    
            //每超出定时器时限时就+1
            num++;
            proc->SetPos(num);
    
            //先获取进度条的最小值和最大值
    
            proc->GetRange(low, height);
    
            //判断是否超出最大值
    
            if (num >> height) {
    
                //超出则让进度条重新跑
    
                proc->SetPos(low);
    
            }
    
            break;
    
     
    
        }
    
        CDialogEx::OnTimer(nIDEvent);
    
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月8日
  • 创建了问题 7月8日

悬赏问题

  • ¥15 esp8266 tally灯 接收端改为发射端
  • ¥30 Labview代码调用access 数据库,相同代码其中一个调用不出来是为什么
  • ¥15 基于51单片机的交通灯系统,找改程序有点急
  • ¥25 急!有人可以做数据结构作业么,有具体要求
  • ¥15 java启动jar包后,运行过程中宕机
  • ¥500 高有偿提问!求优化设计微信小程序
  • ¥15 matlab在安装时报错 无法找到入口 无法定位程序输入点
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部