当我启动程序时,我得到了对话框和所有内容。但它会在大约 10 秒后自行关闭。我该如何禁用它?
编辑:当我运行“调试-> 不调试启动”时会发生这种情况。这是我知道如何运行程序的唯一方法。
EDIT2:我的对话框继承自CDialogEx
.
当我启动程序时,我得到了对话框和所有内容。但它会在大约 10 秒后自行关闭。我该如何禁用它?
编辑:当我运行“调试-> 不调试启动”时会发生这种情况。这是我知道如何运行程序的唯一方法。
EDIT2:我的对话框继承自CDialogEx
.
如果您的对话框不是模态的,即您没有使用 DoModal() 成员函数启动它,则它可能是使用构造函数创建的,并在超出范围时使用析构函数删除。您会在一些启动画面的实现中看到这种类型的行为。要弄清楚发生了什么,请在您的对话框析构函数上放置一个断点,并查看导致它的调用堆栈。在调试器中打开所有异常也是值得的,因为您可能会遇到终止应用程序的未捕获异常。
正如其他人已经说过的,这不是 MFC 应用程序的正常行为。
通常对话框不会那样做。
但在默认情况下,它们关闭 OnOk (CDialog::OnOk),即“Enter Key Pressed”和 OnCancel (CDialog::OnCancel()),即“Esc Key Pressed”
尝试在 Dialog 中重载这两个,看看它们是否被调用并根据需要处理那里的行为。
也许 Close 事件也应该被处理或观察。
这里有很多可以用 Dialog 完成的例子(尤其是 OnOk、OnCancel 和 Close)CDialog 例子
我在使用 Visual Studio 2013 时遇到了同样的问题:
我正在使用 Visual Studio 向导(基于对话框、基于单/多文档)创建最基本的 MFC 应用程序,并且只是重新编译生成的代码。根本没有修改代码。
我刚刚发现关闭防病毒软件时不会出现“重新启动” 。:-) 这不是 Visual Studio 中的错误,而是环境问题。
我的杀毒软件是Avast
。
解决方案Avast
是关闭 Deepscreen 功能。
在那里,转到设置/主动保护/深屏 - 并禁用它。
有关此解决方案的更多详细信息,请参见 Avast 论坛上的讨论: https ://forum.avast.com/index.php?topic=139935.0
已确认,Visual Studio 2010 会发生这种情况,而 Visual Studio 2008 不会发生这种情况。这意味着所有的反对票都是完全没有必要的。这是 Visual Studio 2010 的默认设置,我没有更改任何内容。我也没有犯任何错误,因为我明确表示我创建了一个新应用程序而没有更改任何内容。
感谢所有的反对票。
只是为了记录,我使用 Visual Studio 2010 进行了尝试。我选择了基于对话框的应用程序,并将所有其他选项保留为默认设置。为 x86 和 x64 编译了调试和发布配置。当使用 Start without Debugging 启动时,四个可执行文件都不会自行终止。
如果这发生在您身上,我会假设您有一些应用程序正在运行(在后台),这些应用程序会干扰预期的行为。尝试设置虚拟机,安装干净的 Visual Studio 并再次执行相同的过程。