【问题标题】:MFC dialog close issuesMFC 对话框关闭问题
【发布时间】:2012-01-30 11:38:57
【问题描述】:

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

【问题讨论】:

  • 您的意思是如果您长时间使用鼠标移动对话框并且进度结束,直到您松开鼠标,对话框才会关闭?
  • 即使我松开鼠标按钮,对话框也不会关闭。这就是问题所在。

标签: mfc modal-dialog


【解决方案1】:

对于模态对话框,您实际上不需要使用WM_CLOSE 消息。

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

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

【讨论】:

  • 在遇到不能从 WM_KICKIDLE 处理程序调用 EndDialog 的陷阱后,我现在总是使用 WM_CLOSE 来关闭模式对话框。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 2019-04-06
    • 2020-06-21
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多