Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MFC对话框关闭问题_Mfc_Modal Dialog - Fatal编程技术网

MFC对话框关闭问题

MFC对话框关闭问题,mfc,modal-dialog,Mfc,Modal Dialog,你好! 我有一个带有进度的MFC对话框。 使用PostMessageW(WM_CLOSE)达到100%后,对话框自动关闭。 问题是,在进程中,当我在屏幕上移动对话框时,对话框没有关闭,WM_CLOSE消息被忽略。有什么建议吗?谢谢。对于模式对话框,您实际上不需要使用WM\u CLOSE消息 通常,您会使用OK或Cancel按钮事件来关闭它,从functional code调用EndDialog方法,或者在处理完成后返回(假设对话框初始化后进程立即运行)。您可以同时设置返回值,例如EndDialo

你好! 我有一个带有进度的MFC对话框。 使用PostMessageW(WM_CLOSE)达到100%后,对话框自动关闭。
问题是,在进程中,当我在屏幕上移动对话框时,对话框没有关闭,WM_CLOSE消息被忽略。有什么建议吗?谢谢。

对于模式对话框,您实际上不需要使用
WM\u CLOSE
消息

通常,您会使用OK或Cancel按钮事件来关闭它,从functional code调用
EndDialog
方法,或者在处理完成后返回(假设对话框初始化后进程立即运行)。您可以同时设置返回值,例如
EndDialog(2)


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

进度条后面的活动是在单独的线程中完成的吗?否则,当您拖动对话框时,进度条将冻结,直到您释放对话框,而不是恢复。这意味着您可能必须研究线程间通信,以及消息如何发布到对话框HWND


这可能与拖动对话框时对话框处于冻结(无活动)状态有关,这似乎是windows的正常行为。如果是这种情况,您可以使用signals/CEvent命令对话框关闭。

您的意思是,如果您长时间使用鼠标移动对话框,并且进度完成,对话框直到松开鼠标后才会关闭?即使我松开鼠标按钮,对话框也不会关闭。这就是问题所在。在遇到无法从WM_KICKIDLE处理程序调用EndDialog的陷阱后,我现在总是使用WM_CLOSE来关闭模式对话框。