2012-01-30 60 views
0

美好的一天! 我有一个进展的MFC对话框。 对话框在使用PostMessageW(WM_CLOSE)达到100%后自动关闭。 问题是,在进行期间,我正在将对话框移到屏幕上,对话框没有关闭,WM_CLOSE消息被忽略。有什么建议么?谢谢。MFC对话框关闭问题

+0

这是模型对话框吗? – ChrisBD 2012-01-30 11:51:41

+0

是的,这是模态对话框。 – rapt0r 2012-01-30 11:53:11

+0

你的意思是,如果你长时间用鼠标继续移动对话框并且进度结束,那么只有松开鼠标后,对话框才会关闭。 – 2012-01-30 13:39:34

回答

0

对于模式对话框,您不应该真的需要使用WM_CLOSE消息。

通常你会使用确定或取消按钮事件关闭它,从功能代码调用EndDialog方法或当你处理完成只是返回(假设其过程为对话初始化为立即运行)。您可以同时设置您的返回值,例如EndDialog(2);

无论哪种方式,一旦当前消息处理程序返回,对话框将关闭,因此在关闭时可能会有延迟,但应该不会太多。

+0

运行到,你不能调用的EndDialog从WM_KICKIDLE处理我现在总是用WM_CLOSE关闭模式对话框的陷阱后。 – Lothar 2013-01-10 23:11:31

0

进度条背后的活动是在单独的线程中完成的吗?它看起来就是这种情况,否则当你拖动对话框时,进度条会冻结,直到你释放对话框而不是恢复。这意味着您可能需要查看线程间通信,消息是如何发布到HWND对话框的。

它可能与对话框处于冻结状态(无活动状态)同时拖动它,这似乎是正常的Windows行为。如果是这种情况,你可以使用signals/CEvent来告诉对话框关闭。