我有一个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)中放置一个断点,并且我把它放在那里按预期停止,但不是与其他随机事件一起停止。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
这是Windows计时器的本质。所有计时器事件都由单个消息WM_TIMER处理,您的OnTimer
函数应检查它可以处理的特定事件。某些Windows组件可以生成自己的计时器请求,并且这些组件不会通过MFC SetTimer函数来触发断点。