在看nehe教程的时候,我发现在调用SelectObject函数的时候,作者将这个函数的返回值保存在一个变量里:
HFONT font,oldfont;
oldfont = (HFONT)SelectObject(hDC, font);
不明白这样做的原因,到优快云论坛上搜了下,找到一个不错的答案:
原帖如下:
“两个作用
1.恢复原来的GDI2.释放资源
CBitmap bit, *bitOld = NULL;
bitOld = (CBitmap *)pDC-> SelectObject(&bit); //bitOld保存原来的HBITMAP
//使用完后
pDC-> SelectObject(bitOld); //恢复原来的HBITMAP, 更重要的作用是将bit选出
bit.DeleteObject(); //释放bit 的GDI资源,如果没有上面的一句将它从DC中选出,它是无法删除的"
很感谢大侠的帮助。
http://blog.youkuaiyun.com/mvpsendoh/article/details/6890727
本文解释了在使用SelectObject函数时为何需要保存其返回值。通过一个具体示例说明了保存返回值的两个主要目的:一是为了恢复原先的GDI对象,二是确保能够正确释放资源。
1985

被折叠的 条评论
为什么被折叠?



