hur.cn - 华软网

 热门搜索

MFC 定时器的使用

  作者:未知    来源:网络    更新时间:2011/10/7
一个按键触发一个定时器。

void CMgSv3MBrDlg::OnButtonStart() 
{
// TODO: Add your control notification handler code here
OnVersioncheck();

SetTimer(1,1000,NULL);
SetTimer(2,10000,NULL);
SetTimer(3,10000,NULL);
}

void CMgSv3MBrDlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
OnTestWrite();
break;
case 2:
// KillTimer(1);
OnRestart();
break;
case 3:
// KillTimer(2);
OnButtonPing();
break;
default:
// KillTimer(3);
break;
}
CDialog::OnTimer(nIDEvent);
}

我的源码。不对。

我想OnVersioncheck 执行1秒后执行OnTestWrite,OnTestWrite执行10秒执行OnRestart, OnRestart执行10秒后执行OnButtonPing,  求解决   最好给下修改的源码  谢谢
---华软 网友回答---
OnVersioncheck ();
Sleep(1000);
OnTestWrite();
Sleep(10000);
OnRestart();
Sleep(10000);
OnButtonPing();
---华软网友回复---
C++">
void CMgSv3MBrDlg::OnButtonStart()  
{
// TODO: Add your control notification handler code here
OnVersioncheck();

SetTimer(1,1000,NULL);
}

void CMgSv3MBrDlg::OnTimer(UINT nIDEvent)  
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
KillTimer(1);
OnTestWrite();
SetTimer(2,10000,NULL);
break;
case 2:
KillTimer(2);
OnRestart();
SetTimer(3,10000,NULL);
break;
case 3:
KillTimer(3);
OnButtonPing();
break;
default:
// KillTimer(3);
break;
}
CDialog::OnTimer(nIDEvent);
}


---华软网友回复---
看你是要循环地执行还是只执行一次。
如果只是一次这样的动作,按1楼所说的就行。
如果你要循环地跑进来,可以这样。

C++">

void CMgSv3MBrDlg::OnButtonStart() 
{
// TODO: Add your control notification handler code here
OnVersioncheck();

SetTimer(1,1000,NULL);

}

void CMgSv3MBrDlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1:
OnTestWrite();
SetTimer(2,10000,NULL);
KillTimer(1);
break;
case 2:
OnRestart();
SetTimer(3,10000,NULL);
KillTimer(2);
break;
case 3:
OnButtonPing();
SetTimer(1,1000,NULL);
KillTimer(3);
break;
default:
break;
}
CDialog::OnTimer(nIDEvent);
}

---华软网友回复---
引用 1 楼 hezhe1008 的回复:
OnVersioncheck ();
Sleep(1000);
OnTestWrite();
Sleep(10000);
OnRestart();
Sleep(10000);
OnButtonPing();


哥们 还是谢谢你  不过Sleep不行的,我试过了。
---华软网友回复---
3楼 4楼的 谢谢你们了 搞定咯 !
---华软网友回复---
如果需要精确控制,用线程的挂起与恢复
代码调整如下
C++">
 void CMgSv3MBrDlg::OnButtonStart()  
{
    // TODO: Add your control notification handler code here
//要先设置定时器1,如果先执行OnVersioncheck()函数,则定时器1对OnVersioncheck不起作用
SetTimer(1,1000,NULL);
    OnVersioncheck();
}

void CMgSv3MBrDlg::OnTimer(UINT nIDEvent)  
{
    // TODO: Add your message handler code here and/or call default
    switch(nIDEvent)
    {
    case 1:
        KillTimer(1);
SetTimer(2,10000,NULL);
        OnTestWrite();
        
        break;
    case 2:
        KillTimer(2);
SetTimer(3,10000,NULL);
        OnRestart();
        
        break;
    case 3:
        KillTimer(3);
        OnButtonPing();
        break;
    default:
        break;
    }
    CDialog::OnTimer(nIDEvent);
}

     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。