【发布时间】:2018-06-28 15:51:51
【问题描述】:
我遇到了一个我无法解决的问题。
我正在 Visual Studio 中使用 MFC 开发一个项目。问题是,有时 GUI 只是停止明显的反应,但从技术上讲,它一直在做它打算做的功能。这意味着,当我按下按钮时,函数 OnBnXXXPressed 正在执行,但按钮看起来不像被按下,好像我按下的是按钮的图片,而不是按钮本身。而且不仅仅是这个按钮 - GUI 的所有其他元素 似乎都在继续工作,但并不表明它正在工作。
此外,在这种状态下,对话窗口不会在他们调用时显示。如果我调用AfxMessageBox,消息框不会出现,调用这个函数的线程不会被阻塞; AfxMessageBox 基本上会被跳过。
我完全不知道什么可能导致这种行为。问题是:程序中应该发生什么才能让它以这种方式运行?特别是如果它是用 MFC 构建的?
该项目由 50 多个文件组成,每个负责 GUI 的函数都会对其相关元素进行更改。我不知道错误在哪里,我至少要问你,我应该在哪里查找它。
感谢您的关注!
【问题讨论】:
-
您尝试过多线程方法吗?如果您还没有调查,可能值得调查。
-
我的猜测是,您正在泄漏 GDI 资源。当这些用尽时,控件无法重新绘制自己。在任务管理器中,打开“GDI对象”一栏,看看你的进程是否消耗了过多的对象。
-
@IgorTandetnik 这看起来很合理,我会检查一下!
标签: windows winapi visual-c++ mfc