KillTimer()
在OnTime()中调用KillTimer(),实现只触发一次的定时器。
当您的程序用完定时器时,它呼叫KillTimer函数来停止定时器消息。在处理WM_TIMER消息时,您可以通过呼叫KillTimer函数来编写一个「限用
一次」的定时器。KillTimer呼叫清除消息队列中尚未被处理的WM_TIMER消息,从而使程序在呼叫KillTimer之后就不会再接收到WM_TIMER消
息。
该函数并不移除WM_TIMER 先前发送到消息列队中的消息。
下面的函数实现了定时器只调用一次。定时器第一次触发时,直接KillTimer(nIDEvernt),销毁以前调用SetTimer创建的用nIDEvent标识的定时器事件,但是不能将此定时器有关的未处理的WM_TIMER消息都从消息队列中清除。所以继续执行下面的代码。但是由于nIDEvent标识的定时器事件已经被消除了,所以不会再执行nIDEvent的定时器了。这样就实现了触发一次的定时器。
//定时器
SetTimer(1, 50, NULL);
void ConfigInstallIn::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == 1)
{
KillTimer(nIDEvent);
m_pwndInstallVideo->StartVideo(m_tBoxPuParam.dwDestIp, m_tBoxPuParam.wPort, m_tBoxPuParam.wVideoSrc,\
m_tBoxPuParam.wStreamChn, m_tBoxPuParam.pszStreamType, m_tBoxPuParam.pszAuthorizeInfo, \
m_tBoxPuParam.pUserName, m_tBoxPuParam.pPassWord);
if(m_bShowFrame)
{
m_pwndInstallVideo->m_l32AppSeiScoreFlag = 1;
}
else
{
m_pwndInstallVideo->m_l32AppSeiScoreFlag = 0;
}
m_pwndInstallVideo->FrameCallBack(TRUE);
}
}
支持