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

在做图的时候,非要用新设备替换旧设备吗?解决思路

2012-01-20 
在做图的时候,非要用新设备替换旧设备吗? CClientDCdc(this)CPen*pOldPendc.SelectObject(&pen)dc.Move

在做图的时候,非要用新设备替换旧设备吗?

CClientDC   dc(this);
CPen   *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);

pOldPen这指针默认就存在吗?
还有?
为什么OldPen一定要被替换才行呢?
一直对此不解

[解决办法]
不调用dc.SelectObject(pOldPen);的话
dc一直使用的是pen

[解决办法]
否则pen所占用的GDI资源无法销毁,会造成资源泄漏。
[解决办法]
不会造成内存泄漏(Memory Leak),但有可能造成资源泄漏(Resource Leak)。
这两句话的作用只是用来恢复原来的画笔和画刷。如果你的程序是要长时间使用,并且这个函数是要反复被使用的,那么,建议你加上去.如果只是一般性的使用,价不加也无所谓.
(我就因为没有加,字的颜色把WINDOWS的颜色都改变了..........但是没有内存泄漏)
[解决办法]
pOldPen这指针默认就存在吗?
==========================
你是想问原来dc中是不是有一个画笔吧?dc中应该有一个默认的画笔.
为什么OldPen一定要被替换才行呢?
==========================
不替换也行,只不过你一直用的就是新的画笔就是了.

热点排行