2008-10-09 40 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