MFC中定时器的使用

添加定时器,右击对话框属性,右侧属性点击消息,中找到VM_TIMER

 

MFC中定时器的使用_第1张图片

MFC中定时器的使用_第2张图片

WM_TIMER消息添加消息处理函数,或者定义回调函数。

 如果调用CWnd::SetTimer函数时最后一个参数为NULL,则通过WM_TIMER的消息处理函数来处理定时事件。添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择Properties,显示其属性页,然后在属性页工具栏上点击Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。添加后,cpp文件中会出现类似如下内容:

BEGIN_MESSAGE_MAP(CExample44Dlg, CDialogEx)   

    ......   

   ON_WM_TIMER()   

END_MESSAGE_MAP()   

  

void CExample44Dlg::OnTimer(UINT_PTR nIDEvent)   

{   

   // TODO: Add your message handler code here and/or call default   

 

   CDialogEx::OnTimer(nIDEvent);   

}

    之后就可以在OnTimer函数中进行相应的处理了。OnTimer的参数nIDEvent为定时器ID,即在SetTimer成员函数中指定的定时器ID,如果有多个定时器,我们可以像下面这样处理:

SetTimer(TIM_DB,500,NULL); //设置哪个定时器多久触发

SetTimer(TIM_QU,100,NULL);

void CsoftBDlg::OnTimer(UINT_PTR nIDEvent)
{
    CSingleton* pSng = CSingleton::GetInstance();
    if (nIDEvent == TIM_DB)
    {
        CString sql;
        sql.Format("Update Sta set Status = 5");  //读取数据库每个字段产品
        pSng->_DB.Execute(sql);
        SetDlgItemText(IDC_STATIC1,"改成了5");
    }
    if (nIDEvent == TIM_QU)
    {
        CString sql,sVal;
        sql.Format("Select Top 1 Status from Sta");  //读取数据库每个字段产品
        pSng->_DB.ExecuteQueryValue(sql,sVal);
        if (sVal == "0")
        {
            SetDlgItemText(IDC_STATIC1,"变成了0");
        }
    }
    CDialogEx::OnTimer(nIDEvent);
}

运用switch语句处理多个定时器

  1. void CExample44Dlg::OnTimer(UINT_PTR nIDEvent)      
  2. {      
  3.     // TODO: Add your message handler code here and/or call default      
  4.     switch (nIDEvent)      
  5.     {      
  6.     case 1:      
  7.         // 如果收到ID为1的定时器的消息则调用func1函数      
  8.         func1();      
  9.         break;      
  10.     case 2:      
  11.         // 如果收到ID为2的定时器的消息则调用func2函数      
  12.         fun2();    
  13.        break;     
  14.     ......      
  15.     default:      
  16.         break;      
  17.     }      
  18.      
  19.     CDialogEx::OnTimer(nIDEvent);      
  20. }     
  21. 参考http://www.jizhuomi.com/software/232.html

你可能感兴趣的:(MFC)