2008-10-09 89 views
2

似乎DrawFrameControl()创建Font和Brush对象,将它们选中为dc,并且不会将其删除。 (根据BoundsChecker消息)。有人遇到过这种事吗?DrawFrameControl中的GDI资源泄漏

回答

2

我在各种OS/CRT Dll中经历过相同的操作。 的模式之一是其中

  • 我为了执行I喜欢的任何操作(即创建兼容的存储DC)得到的窗口(的GetDC或GetWindowDC)的DC。
  • 我使用它完成后释放DC,即使我没有选择任何GDI对象,我也会收到Boundschecher警告,指出设备上下文中仍有选定的对象。

由于这些警告绝对不在我的代码中,所以我会建议让他们带上一粒盐。 一般来说,我所做的是清理任何具有对我的代码的引用的BC警告。

Off topic:BC会发出很多警告,说明开发人员无法修复他的代码。在stl中,你会有无数的警告,但其中大多数是“比较无关的指针”。这并不意味着卑诗省错误地抛出它们。在常规应用中“比较不相关的指针”可能是一场灾难,但我认为编写stl实现的人知道他们正在做什么,并且可能已经检查了这些情况。

+0

不幸的是在我的情况下肯定有泄漏,因为GDI对象的数量在几秒钟内上升到几千,然后GDI崩溃。 – cos 2008-10-09 12:37:05