| 版权声明:本文为博主原创文章,未经博主允许不得转载。
SetTimer是一种API函数,位于user32.dll中。你想每隔一段时间执行一件事的的时候,你可以使用它。 使用定时器的方法比
较简单,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序。通常有两种方法来实现:发送
WM_TIMER消息和调用应用程序定义的回调函数。不需要指定定时器时,可以调用对应的KillTimer函数销毁指定的时钟。(也就是
说你在某个函数中使用了SetTimer函数的话,并且指定了时间间隔,那么程序运行是每个一段时间就会执行它)
要使用SetTimer函数那么我们首先要在函数体内添加每一个timer的处理代码;也就是在OnTimer()函数实现,这个函数我们要
自己来实现,下面的函数OnTimer()需通过ClassWizard(Ctrl+W)来添加;如下图操作:
上面的步骤完成之后,在CPandaPlayer.cpp中就会自动生成一个OnTimer()的函数;如下
1 void CPandaPlayerDlg::OnTimer(UINT nIDEvent) 2 { 3 // TODO: Add your message handler code here and/or call default 4 //在这里我们添加自己的实现 5 CDialog::OnTimer(nIDEvent); 6 }
如下实现:
1 void CPandaPlayerDlg::OnTimer(UINT nIDEvent) 2 { 3 // TODO: Add your message handler code here and/or call default 4 switch(nIDEvent) 5 { 6 case 0: 7 switch(model) 8 { 9 case 1: 10 KillTimer(0); 11 //函数代码省略 12 ...... 13 break; 14 case 2: 15 KillTimer(0); 16 //函数代码省略 17 ...... 18 break; 19 default: 20 MessageBox(_T("出错!即将退出程序!"),_T("ERROR"),MB_OK); 21 exit(0); 22 break; 23 } 24 break; 25 } 26 CDialog::OnTimer(nIDEvent); 27 }
实现上面的OnTimer()函数之后,我们就可使用SetTimer()函数来实现我们自己的功能了;如下示例:
1 //播放函数 2 void CPandaPlayerDlg::OnPlay() 3 { 4 // TODO: Add your control notification handler code here 5 m_MediaControl.play(); 6 SetTimer(0,20,NULL); 7 }
*说明:0:计时器的名称;20:时间间隔,单位是毫秒;NULL:使用OnTimer函数(第三个参数就是回调函数地址)。
上面我们设置了SetTimer()函数,当我们不需要了的时候我们可以通过KillTimer(nIDEvent)函数来取消计时器。
1 case 2: 2 KillTimer(0); 3 //此处代码省略 4 ....... 5 break;
百度百科关于此函数的介绍,链接: SetTimer