指定兩次觸發Timer事件之間的時間間隔,有效值在0到65之間。若是該參數的值指定爲0,那麼關閉定時器, 再也不觸發指定窗口的Timer事件。windowname:窗口名,指定時間間隔到時要觸發哪一個窗口的Timer事件。省略該參數時,觸發當前窗口的 Timer事件返回值Integer。函數執行成功時返回1,發生錯誤時返回-1。若是任何參數的值爲NULL,Timer()函數返回NULL。用法使 用Timer()函數能夠週期性地觸發指定窗口的Timer事件,這樣,每當時間間隔過去時,應用程序都 能夠完成一些週期性的工做,好比繪製簡單動畫等。將Timer()的interval參數設置爲非0值時啓動定時器並開始計時;將該函數的 interval參數設置爲0時關閉定時器,終止計時任務。須要注意的是,在Microsoft Windows系統中,該函數可以計時的最小時間間隔爲0.055秒(約1/18秒),若是把interval參數的值設置小於0.055,那麼該定時器 將每隔0.055秒觸發一次窗口的Timer事件。Microsoft Windows 3.x最多隻支持系統中同時啓動16個定時器。ide
1 UINT_PTR SetTimer( 2 UINT_PTR nIDEvent, 3 UINT nElapse, 4 void (CALLBACK* lpfnTimer)( 5 HWND, 6 UINT, 7 UINT_PTR, 8 DWORD 9 ) 10 );
1 BEGIN_MESSAGE_MAP(CExample44Dlg, CDialogEx) 2 ...... 3 ON_WM_TIMER() 4 END_MESSAGE_MAP() 5 void CExample44Dlg::OnTimer(UINT_PTR nIDEvent) 6 { 7 // TODO: Add your message handler code here and/or call default 8 CDialogEx::OnTimer(nIDEvent); 9 }
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 CDialogEx::OnTimer(nIDEvent); 19 }
1 void CALLBACK EXPORT TimerProc( 2 HWND hWnd, // handle of CWnd that called SetTimer 3 UINT nMsg, // WM_TIMER 4 UINT nIDEvent // timer identification 5 DWORD dwTime // system time 6 );
1 void CALLBACK EXPORT TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime) 2 { 3 switch(nTimerid) 4 { 5 case 1: 6 // 處理ID爲1的定時器的事件 7 func1(); 8 break; 9 case 2: 10 // 處理ID爲2的定時器的事件 11 func2(); 12 break; 13 ...... 14 default: 15 break; 16 } 17 }