首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

[GDI]能不能剔除当前被SelectObject()选进的对象?

2012-09-29 
[GDI]能不能删除当前被SelectObject()选进的对象??在《windows游戏编程大师技巧》一书中有这么一句话:销毁画

[GDI]能不能删除当前被SelectObject()选进的对象??
在《windows游戏编程大师技巧》一书中有这么一句话:
销毁画笔时应当非常小心.如果要删除一个当前正被选定的对象,或者选定一个当前已被删除的对象,将发生错误...

也就是说,在删除一个正在被选定的对象之前,一定要恢复之前返回的旧对象,即把旧对像再选进去,然后再进行删除.

但是,在我所知道的一些开源库里,比如字体对象:
SelectObject(m_FontDC,m_FontBmp);
他的整个代码,都没有保存旧对象,而且人家删除的时候,也不会有什么问题,

我自己的测试也是如此,比如:
HBRUSH brush = ::CreateSolidBrush(0);
SelectObject(g_hMemoryDC, brush);
if (::DeleteObject(brush)) // 经测试,这里返回的是TRUE
int ok = 0;

这样做,并不会有问题.

请问,到底应该听谁的? 到底要不要保存旧对象,最后对其做恢复选定??

[解决办法]
你看看内存有没有泄漏。

我也是不保存原来的,没啥内存泄漏。
不过经常看到有人发帖说泄漏,泄漏。
但是俺不搞服务器程序,小泄漏也无所谓。泄漏几个字节问题不大。

热点排行