如何在Visual Studio中禁用基于对话框的MFC应用程序的自动关闭?

时间:2012-06-12 09:46:46

标签: c++ visual-studio mfc dialog

当我启动程序时,我会得到对话框和所有内容。但它在10秒后自行关闭。如何禁用它?

编辑:当我运行“Debug - > Start Without Debugging”时会发生这种情况。这是我知道如何运行程序的唯一方法。

EDIT2:我的对话框继承自CDialogEx

5 个答案:

答案 0 :(得分:1)

如果您的对话框不是模态的,即您没有使用DoModal()成员函数将其启动,则可能是使用构造函数创建它,并在析构函数超出范围时使用析构函数删除。您可以通过一些启动屏幕实现看到此类行为。要弄清楚发生了什么,在对话框析构函数上放置一个断点,然后查看导致它的调用堆栈。同样值得启用调试器中的所有异常,因为您可能会遇到未终止应用程序的未捕获异常。

正如其他人已经说过的,这对于MFC应用程序来说不是正常行为。

答案 1 :(得分:0)

通常,对话框不会那样。

但默认情况下,他们关闭OnOk(CDialog :: OnOk),这是“输入按键” 和OnCancel(CDialog :: OnCancel()),这是“Esc Key Pressed”

尝试在Dialog中重载这两个,看看那些是否被调用并处理 你喜欢它的行为。

也许应该处理或观看Close事件。

这里有很多关于Dialog可以做什么的例子(特别是OnOk,OnCancel和Close)CDialog Examples

答案 2 :(得分:0)

我在Visual Studio 2013中面临同样的问题:

我使用Visual Studio向导创建了最基本的MFC应用程序(基于对话框,基于单个/多个文档),并且只是重新编译生成的代码。根本不需要修改代码。

发现,当我关闭我的防病毒软件时,“重启”不会发生。 :-) 这不是Visual Studio中的错误,它是一个环境问题。

我的反病毒是Avast

Avast的解决方案是关闭深屏功能。

  

在那里,转到设置/主动保护/深屏 - 并禁用

在此讨论中,可以找到有关此Avast论坛解决方案的更多详细信息: https://forum.avast.com/index.php?topic=139935.0

答案 3 :(得分:-1)

确认,这种情况发生在Visual Studio 2010中,并且在Visual Studio 2008中不会发生。这意味着所有负面投票都是完全没必要的。这是Visual Studio 2010的默认设置,我没有改变任何东西。我也没有犯任何错误,因为我明确地说我创建了一个新的应用程序而没有改变任何东西。

感谢所有的反对票。

答案 4 :(得分:-3)

仅为了记录,我使用Visual Studio 2010尝试了这一点。我选择了基于Dialog的应用程序,并将所有其他选项保留为默认设置。为x86和x64编译了Debug和Release配置。使用Start without Debugging启动时,四个可执行文件都不会自行终止。

如果发生这种情况,我会假设你有一些应用程序运行(在后台)会干扰预期的行为。尝试设置虚拟机,安装干净的Visual Studio并再次执行相同的过程。