我遇到了无法解决的问题。
我正在Visual Studio中使用MFC处理项目。问题是,有时GUI只是明显停止响应,但从技术上讲,它一直在执行预期的功能。这意味着,当我按下按钮时,功能OnBnXXXPressed正在执行,但是按钮看起来好像没有被按下,就像我按下按钮的图片一样,而不是按钮本身。而且不仅是这个按钮- GUI的所有其他元素似乎都可以正常工作,但并不表明它可以正常工作。
此外,在此状态对话框中,呼叫时不会显示窗口。如果我调用AfxMessageBox,则消息框将不会显示,并且调用此函数 的线程不会被阻止; AfxMessageBox基本上将被跳过。
我完全不知道什么可能导致这种行为。问题是:程序在这种情况下应该发生什么?特别是如果它是使用MFC构建的?
该项目包含50多个文件,负责GUI的每个功能都对其要进行的元素进行更改。我不知道错误在哪里,我至少要问我应该在哪里在哪里。
感谢您的关注!
答案 0 :(得分:0)
单击按钮时,您正在执行大量处理,还是快速返回?如果您不返回,则可能锁定UI线程。用户按下按钮后,该OnClick会花多长时间才能完成运行?
仅此而已,这是更多信息:https://docs.microsoft.com/en-us/windows/desktop/Win7AppQual/preventing-hangs-in-windows-applications
我通常用于在UI单击上长时间运行的逻辑的解决方案是在后台线程中运行它。
答案 1 :(得分:0)
答案最初是在评论部分提供的。我的代码确实存在GDI资源泄漏,这正在引发这种行为。