環(huán)境VC2008,在文檔視圖結(jié)構(gòu)中的菜單上加了菜單用于彈出一個派生自CDialog的對話框,,響應(yīng)加到了frame窗口中,。 在OnInitDialog中使用SetTimer設(shè)置定時器,采用默認(rèn)響應(yīng)函數(shù)OnTimer,。 問題: 1,、在菜單的響應(yīng)函數(shù)中使用對話框的DoModal彈出,定時器沒有響應(yīng),,SetTimer的返回值正常,,在對話框的PreTranslateMessage函數(shù)中發(fā)現(xiàn)根本就收不到WM_TIMER消息。 2、將對話框使用Create,ShowWindow的形式創(chuàng)建非模態(tài)對話框就可以收到WM_TIMER消息,,能夠進(jìn)入到OnTimer中,。 百思不得其解,!哪位給解釋一下,,找一下原因?,?多謝,,多謝~~ 當(dāng)使用DoModal形式創(chuàng)建模態(tài)對話框的時候,你所彈出的對話框和主程序處于同一個線程內(nèi),,并且一旦彈出模態(tài)對話框,,線程就處于堵塞(停頓)狀態(tài),在此期間無法響應(yīng)其它操作,,直到模態(tài)對話框銷毀,。
而用非模態(tài)對話框的話,實際上等于開辟了一個新的子線程,,你的主程序(就是那個frme)和對話框各跑各的,,自然可以響應(yīng)定時器事件。 |
|