mfc KillTimer()的使用

406 阅读1分钟

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);



}

}

支持

欢迎关注公众号  谁吃薄荷糖,主要记录日常中觉得有意思的事情以及分享开发实践,保持深度和专注度,喜欢的点击右下角的再看哦。

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8bb36359210c4888bc147c5487f7dea1~tplv-k3u1fbpfcp-zoom-1.image

\