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

来源:互联网 发布:如何遍历json里的数组 编辑:程序博客网 时间:2024/06/03 13:29

一.使用VS2015创建新项目->MFC应用程序->基于对话框
这里写图片描述
这里写图片描述
二.在对话框中添加Progress Control控件和一个Button控件
这里写图片描述
三.双击“启动”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哈哈~至此进度条和定时器基本运用就完成了