当前位置:  开发笔记 > 编程语言 > 正文

GDI泄漏问题

如何解决《GDI泄漏问题》经验,为你挑选了1个好方法。

我注意到使用任务管理器,以下代码中有GDI泄漏.执行此代码的进程中GDI对象的计数每次执行时增加1,但我似乎无法找到问题.

任何帮助,将不胜感激.

// create new DC based on current    
HDC hDC = CreateCompatibleDC(GetDC());
// select a bitmap into the new DC and keep the old one
HGDIOBJ hOldObj = SelectObject (hDC,hBM);
// do somthing here --> 100% no leak here
SomeFunction (hDC);
// select the old object back from whence it came and delete whats returned   
DeleteObject (SelectObject (hDC,hOldObj));
// delete the DC
DeleteDC(hDC);
// delete the tmp object
DeleteObject (hOldObj);

R M



1> Ismael..:

从评论中复制,我没有把它作为答案,因为我无法测试它,我不确定它是否正确,请测试它.

一般来说,嵌套调用即不是一个好主意

HDC hDC1 = GetDC(); 
HDC hDC2 = CreateCompatibleDC(hDC1); 
.. 

代替

HDC hDC = CreateCompatibleDC(GetDC()); 

(在你的代码中BTW没有发布GetDC返回的HDC.)

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有