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ㄒ)/~~


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);

}