MFC中OnTimer定时器用法

一、     单个定时器用法

定时器工作主要流程:设置定时器SetTimer,时间到后调用OnTimer函数,关闭定时器KillTimer。可以在程序初始化用SetTimer函数弄成多个线程类似,并行进行多个函数功能。

1.1 SetTimer(H,nID,elipse,NULL)

函数作用:开始nID号定时器

H:要定时的事件句柄,在MFC中不需要该参数,因为MFC封装在CWnd类中

nID:定时器号,比如1,2,3,….125

elipse:定时时间,单位为毫秒。比如1000,则表示定时1s

NULL:回调事件,表示定时结束后,要调用的窗口函数,一般为NULL,表示定时时间到后,调用系统默认的OnTimer()事件。

例子:SetTimer(1,1000,NULL);

 

1.2 OnTimer(){…}

定时时间到后,自动调用OnTimer()函数

OnTimer()函数是在WM_ONTIMER消息处理函数中打开

打开路径:ClassWizard—Messages—ONTIMER

 

1.3 KillTimer(nID)

函数作用:取消nID号定时器

nID:与SetTimer()函数中的nID号相同

例子:KillTimer(1);

 

二、     多个定时器用法

SetTimer(1,1000,NULL);

SetTimer(2,30000,NULL);

SetTimer(3,500,NULL);

系统会自动协调,只需要在OnTimer(nID){}函数体添加判断选择语句就行

void CENetCommunicationDlg::OnTimer(UINT_PTR nIDEvent)

{

   // TODO: Add your message handler code here and/orcall defaultCOleDateTime systime = COleDateTime::GetCurrentTime();

   switch (nIDEvent)

   {

   case 1:

   {

   COleDateTime systime = COleDateTime::GetCurrentTime();

//获取系统当前时间函数

   m_SysTime =systime.Format();

   UpdateData(FALSE);

   }

      break;

 

   case 2:

   {

   MessageBox(_T("30秒显示一次"));

   }

      break;

 

   case 3:

   {

   }

      break;

 

   case 4:

   {

   }

      break;

 

   case 5:

   {

   }

      break;

 

   default:

      break;

   }

   CDialogEx::OnTimer(nIDEvent);

}

你可能感兴趣的:(MFC积累)