MFC:GUI冻结,但仍能正常工作

时间:2018-06-28 15:51:51

标签: windows winapi visual-c++ mfc

我遇到了无法解决的问题。

我正在Visual Studio中使用MFC处理项目。问题是,有时GUI只是明显停止响应,但从技术上讲,它一直在执行预期的功能。这意味着,当我按下按钮时,功能OnBnXXXPressed正在执行,但是按钮看起来好像没有被按下,就像我按下按钮的图片一样,而不是按钮本身。而且不仅是这个按钮- GUI的所有其他元素似乎都可以正常工作,但并不表明它可以正常工作。

此外,在此状态对话框中,呼叫时不会显示窗口。如果我调用AfxMessageBox,则消息框将不会显示,并且调用此函数 的线程不会被阻止; AfxMessageBox基本上将被跳过。

我完全不知道什么可能导致这种行为。问题是:程序在这种情况下应该发生什么?特别是如果它是使用MFC构建的?

该项目包含50多个文件,负责GUI的每个功能都对其要进行的元素进行更改。我不知道错误在哪里,我至少要问我应该在哪里在哪里

感谢您的关注!

2 个答案:

答案 0 :(得分:0)

单击按钮时,您正在执行大量处理,还是快速返回?如果您不返回,则可能锁定UI线程。用户按下按钮后,该OnClick会花多长时间才能完成运行?

仅此而已,这是更多信息:https://docs.microsoft.com/en-us/windows/desktop/Win7AppQual/preventing-hangs-in-windows-applications

我通常用于在UI单击上长时间运行的逻辑的解决方案是在后台线程中运行它。

答案 1 :(得分:0)

答案最初是在评论部分提供的。我的代码确实存在GDI资源泄漏,这正在引发这种行为。