MFC对话框关闭问题
你好! 我有一个带有进度的MFC对话框。 使用PostMessageW(WM_CLOSE)达到100%后,对话框自动关闭。MFC对话框关闭问题,mfc,modal-dialog,Mfc,Modal Dialog,你好! 我有一个带有进度的MFC对话框。 使用PostMessageW(WM_CLOSE)达到100%后,对话框自动关闭。 问题是,在进程中,当我在屏幕上移动对话框时,对话框没有关闭,WM_CLOSE消息被忽略。有什么建议吗?谢谢。对于模式对话框,您实际上不需要使用WM\u CLOSE消息 通常,您会使用OK或Cancel按钮事件来关闭它,从functional code调用EndDialog方法,或者在处理完成后返回(假设对话框初始化后进程立即运行)。您可以同时设置返回值,例如EndDialo
问题是,在进程中,当我在屏幕上移动对话框时,对话框没有关闭,WM_CLOSE消息被忽略。有什么建议吗?谢谢。对于模式对话框,您实际上不需要使用
WM\u CLOSE
消息
通常,您会使用OK或Cancel按钮事件来关闭它,从functional code调用EndDialog
方法,或者在处理完成后返回(假设对话框初始化后进程立即运行)。您可以同时设置返回值,例如EndDialog(2)代码>
无论哪种方式,对话框都会在当前消息处理程序返回后关闭,因此关闭时很可能会有延迟,但不会太多。进度条后面的活动是在单独的线程中完成的吗?否则,当您拖动对话框时,进度条将冻结,直到您释放对话框,而不是恢复。这意味着您可能必须研究线程间通信,以及消息如何发布到对话框HWND
这可能与拖动对话框时对话框处于冻结(无活动)状态有关,这似乎是windows的正常行为。如果是这种情况,您可以使用signals/CEvent命令对话框关闭。您的意思是,如果您长时间使用鼠标移动对话框,并且进度完成,对话框直到松开鼠标后才会关闭?即使我松开鼠标按钮,对话框也不会关闭。这就是问题所在。在遇到无法从WM_KICKIDLE处理程序调用EndDialog的陷阱后,我现在总是使用WM_CLOSE来关闭模式对话框。