获取 MFC 对话框关闭原因

Posted

技术标签:

【中文标题】获取 MFC 对话框关闭原因【英文标题】:Getting MFC DIalog close reason 【发布时间】:2013-09-20 14:16:37 【问题描述】:

对于CDialogSystem.Windows.Forms.CloseReason 的 MFC 等效项是什么?

如何在MFC CDialog中捕获FormClosing事件?

【问题讨论】:

【参考方案1】:

没有办法区分关闭对话框后关闭的原因。 当我查看 CloseReasons 列表时,大多数原因都会创建不同的消息(如关机)。我看到的唯一方法是为对您很重要的事件/情况实现消息处理程序。

注意:某些 CloseReasons 对于 MFC 应用程序中的模态对话框没有意义(如 FormOwnerClosing)...

【讨论】:

【参考方案2】:

CDialog::DoModal 返回一个值,具体取决于它的关闭方式(可以是 IDOK、IDCANCEL 或其他值 - 请参阅此参考:http://msdn.microsoft.com/en-us/library/619z63f5%28v=vs.90%29.aspx)。

您可以使用对话框中的各种消息来判断它何时关闭 - OnCancel (http://msdn.microsoft.com/en-us/library/kw3wtttf%28v=vs.90%29.aspx) 或 OnOK (http://msdn.microsoft.com/en-us/library/66b3y2ab%28v=vs.90%29.aspx) 是其中一些更有趣的消息。

【讨论】:

这没有帮助。我通过任务管理器杀死它,按ESC键,按取消按钮。所有这些都给我返回码2。我无法区分。

以上是关于获取 MFC 对话框关闭原因的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 对话框中添加关闭按钮

MFC 对话框不显示,返回-1 原因

在给定时间段后关闭或放弃 MFC 对话框

创建线程会在终止时挂起 MFC 对话框应用程序

如何“正确关闭 MFC 无模式对话框并修复资源泄漏”

MFC如何在切换视图时关闭无模式对话框