2012-03-31 90 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