MFC中CBitmap、CBrush、CFont、CPalette、CPen、CRgn删除GDI对象问题
CBitmap、CBrush、CFont、CPalette、CPen、CRgn均继承自CGdiObject,GDI对象属于CGdiObject,该类的析构函数会释放GDI对象。因此,如果CPen等GDI对象在栈上创建,则不必要显式调用DeleteObject,如果在堆上创建,则在特定时刻需要删除它,以便执行其析构函数。
参考:
【1】GDI对象继承关系图

【2】MFC源码

【3】MFC程序设计(第2版)


浙公网安备 33010602011771号