MFC中用c++语言实现进度条和定时器

一.使用VS2015创建新项目->MFC应用程序->基于对话框
MFC中用c++语言实现进度条和定时器_第1张图片
MFC中用c++语言实现进度条和定时器_第2张图片
二.在对话框中添加Progress Control控件和一个Button控件
MFC中用c++语言实现进度条和定时器_第3张图片
三.双击“启动”Button进入代码编辑,添加如下代码:

void CProgressBarAndTimerDlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    /*
    CProgressCtrl *m_progressctrl = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
    m_progressctrl->SetRange32(1, 100);

    for (int i = 0; i < 100; i++)
    {
        m_progressctrl->OffsetPos(1);
        Sleep(100);

    } */   //此函数单纯的只是测试进度条

      m_progressctrl.SetRange32(1, 100);
        timer2 = SetTimer(2, 100, NULL); //定时器2,时间100毫秒
        timer = SetTimer(1,10000,NULL);//定时器1,时间10000毫秒
        m_progresscurpos = 1;
}

四.添加OnTimer(UINT_PIR nIDEvent)函数,代码如下:

void CProgressBarAndTimerDlg::OnTimer(UINT_PTR nIDEvent)
{
    if (nIDEvent == 1)//定时器1达到条件
    {
        ::MessageBox(NULL, "时间到了", "", 0);

        KillTimer(timer);//当定时器1产生后立即关闭
    }
    else if (nIDEvent == 2)//定时器2达到条件
    {
        m_progressctrl.SetPos(m_progresscurpos);
        m_progresscurpos++;
        if (m_progresscurpos == 100)
        {
            KillTimer(timer2);
        }
    }

    CDialogEx::OnTimer(nIDEvent);
}

注意:在头文件中添加OnTimer()函数声明:

afx_msg void OnTimer(UINT_PTR nIDEvent);//在xxxxDlg.h文件中声明

在添加成员变量:

 CProgressCtrl m_progressctrl;
    UINT_PTR timer;
    UINT_PTR timer2;
    int m_progresscurpos;

在定义DoDataExchange(CDataExchange* pDX)函数:

void CProgressBarAndTimerDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_PROGRESS1, m_progressctrl);
}//此函数在xxxDlg.cpp文件中可以找到

O(∩_∩)O哈哈~至此进度条和定时器基本运用就完成了

你可能感兴趣的:(MFC)