2014-11-05 50 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

相關問題