2012-03-31 64 views
1

當存在模式對話框時,使用PostMessage發送到主窗口的消息不會通過該窗口的消息循環。事實上,當模態對話框出現時,沒有消息通過主窗口的消息循環。他們確實通過對話框處理中的一些消息循環,將它傳遞給主窗口的WndProc。Windows消息循環Oddity

這是正常的還是我做了一件奇怪的事情?

回答

2

這很正常,對話框通過泵送自己的消息循環變爲模態。這應該不是問題,DispatchMessage仍然將消息傳遞給窗口過程。確保你發佈有效的窗口句柄。否則,如果線程創建任何窗口,PostThreadMessage()是保證失敗鯨魚的原因。像MessageBox()一樣。

+0

如果對話框是非模態而非模態會發生什麼? – 2012-03-31 16:50:03

+0

沒什麼特別的,沒有其他的消息循環。這就是爲什麼你必須調用IsDialogMessage()來支持無模式對話。 – 2012-03-31 16:56:20