我有一个奇怪的问题,我一直无法诊断,我希望有人能够至少指出我正确的方向。我有一个C ++ MFC应用程序,它从各种来源收集数据并将其显示在屏幕上。然而,在随机间隔(通常约5-10分钟)之后,显示器以我从未见过的方式“被破坏”或者能够跟踪,如下图所示(左边是正常的,右边是腐败的) ):
基本症状是:
我试图消除的可能原因包括:
关于原因可能是什么或如何缩小范围的任何想法都会很棒。
更新1: 做一些更多的定时/可重复测试,看起来让这个对话框运行一会儿会导致问题。在问题出现之前,金额时间始终在300-400秒之间。
答案 0 :(得分:1)
听起来你的应用程序可能正在泄漏GDI对象。要检查是否是这种情况,请打开任务管理器并启用GDI Objects
列。观察过程的编号,看它是否在不断增加。
如果确实如此,您应该阅读Detect and Plug GDI Leaks in Your Code with Two Powerful Tools for Windows XP。该MSDN文章还提供了一个名为GDILeaks.exe
的工具,可以帮助您识别GDI泄漏。
如果这些症状在短时间内浮出水面,那么它应该是反复绘制的,不能正确释放GDI资源。可能在(或在其中)窗口过程(例如OnPaint)。
答案 1 :(得分:0)
如果我没弄错,Windows的GUI会对这些小图标使用ttf(?)字体,看起来字体会以某种方式被破坏(使用字体的句柄调用DeleteObject?)