MFC OnTimer从其他地方接收额外事件

MFC OnTimer receiving extra events from somewhere else

本文关键字:事件 方接收 OnTimer 其他 MFC      更新时间:2023-10-16

我有一个MFC应用程序,正在使用ON_WM_TIMER。

前1-2分钟,我用启动计时器

m_nIDEvent = SetTimer( 234, 500, NULL );

这是完美的工作,但在运行应用程序2-3分钟后,我得到了另一个事件,我不知道它是从哪里来的,每100毫秒左右

所以,我有void SomeClass::OnTimer(UINT事件){char str[100];sprintf_s(str,"event=%d\n",event);}

起初,它只打印出事件#234,但在2-3分钟后,它开始显示430-432中的一些事件。有什么想法吗?

我试着在afxwin2.inl(其中定义了SetTimer)处放置一个断点,并使用我放置的事件将其按预期停止,但不使用其他随机事件。

有什么想法吗?

谢谢!

这是Windows计时器的特性。所有计时器事件都由单个消息WM_timer处理,OnTimer函数应该检查它可以处理的特定事件。一些Windows组件可以生成自己的计时器请求,而这些请求不会通过MFC SetTimer函数来触发断点。