1. 程式人生 > >MFC中OnTimer定時器用法

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

}