指定两次触发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 }