关于MFC定时器的一点问题
我设置了两个定时器都是用的OnTimer定义的,在一个对话框中定义如下:
void CDlgSDH::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
Detect();
CDialog::OnTimer(nIDEvent);
}
void CDlgSDH::StartDetect()
{
//m_TimeID = ::timeSetEvent (1000,1,CallBackFunc,(DWORD)this,TIME\_PERIODIC);
SetTimer(1,1000,NULL);
}
void CDlgSDH::StopDetect()
{
//::timeKillEvent(m_TimeID);
KillTimer(1);
}
在另一个对话框中定义如下:
void CDlgPDHAps::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (3 == nIDEvent)
{
UpdateItem();
}
if (2 == nIDEvent)
{
UpdateSepTip();
}
CDialog::OnTimer(nIDEvent);
}
void CDlgPDHAps::UpdateResult()
{
SetTimer(2,200,NULL);
SetTimer(3,300,NULL);
}
两个对话框的SetTimer都放在了OnInitDialog()函数执行,可是当我程序运行的时候前面一个定时器执行的时候后面的一个就不执行了,请问这是什么回事,有人遇到过吗?还有是不是OnTimer这个定时器有问题?大家分享一下咯!
[解决办法]
timer是和窗口相关联的
2个dialog用2个timer
[解决办法]
试试看,不保证对:
UINT t1,t2,t3;void CDlgSDH::OnTimer(UINT_PTR nIDEvent){ // TODO: Add your message handler code here and/or call default Detect(); CDialog::OnTimer(nIDEvent);}void CDlgSDH::StartDetect(){ //m_TimeID = ::timeSetEvent (1000,1,CallBackFunc,(DWORD)this,TIME\_PERIODIC); t1=SetTimer(1,1000,NULL);}void CDlgSDH::StopDetect(){ //::timeKillEvent(m_TimeID); KillTimer(1);}在另一个对话框中定义如下:void CDlgPDHAps::OnTimer(UINT_PTR nIDEvent){// TODO: Add your message handler code here and/or call default if (3 == nIDEvent) { KillTimer(t3); UpdateItem(); t3=SetTimer(3,300,NULL); } if (2 == nIDEvent) { KillTimer(t2); UpdateSepTip(); t2=SetTimer(2,200,NULL); }}CDialog::OnTimer(nIDEvent){ KillTimer(t1); t1=SetTimer(1,1000,NULL);}void CDlgPDHAps::UpdateResult(){ t2=SetTimer(2,200,NULL); t3=SetTimer(3,300,NULL);}
[解决办法]