2014-11-05 47 views
0

额外的事件我有哪里我使用的是ON_WM_TIMER MFC应用程序。MFC的OnTimer接收从其他地方

第1-2分钟,我火了

m_nIDEvent = SetTimer(234, 500, NULL); 

这是可以正常使用的计时器,但2-3分钟运行的应用程序后,我发现了另一个事件,我没有想法从哪里来,每100ms左右。所以,我有 void SomeClass :: OnTimer(UINT event) { char str [100]; sprintf_s(str,“event =%d \ n”,event); }

起初只打印出了大事#234,但是2-3分钟后,开始从430-432显示某些事件。有任何想法吗?

我试图把一个断点afxwin2.inl(其中的SetTimer的定义),并与事件我把它停在那里为目的,而不是与其他随机事件。

任何想法?

谢谢!

+0

旧的浏览器不是让我来编辑它,但有在计时器触发一个打印语句,我没有补充。 – Skynight 2014-11-05 22:58:19

+0

Windows在内部使用计时器来实现某些视觉效果。你可以更具体地指出你引用的'SomeClass'吗? – user1793036 2014-11-05 23:42:24

+0

对,对不起。我有一个名为Viewer2的类,它是CRichEditView的基类。现在,我只是简单地使用WM_TIMER向CRichEditView添加一些文本。 – Skynight 2014-11-05 23:51:50

回答

1

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

+0

我刚刚注意到了这一点,例如我从我的代码中删除了SetTimer事件。这个问题是可重复的,当我左键单击并拖动RichEditView窗口,我猜这将是MFC的预期响应,问题是它会卡住,即使在不使用左键单击/拖动时继续调用此窗口。 – Skynight 2014-11-05 23:49:24

相关问题