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

时间:2021-07-30 08:57:23

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

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

5 个解决方案

#1


不调用dc.SelectObject(pOldPen);的话
dc一直使用的是pen

#2


否则pen所占用的GDI资源无法销毁,会造成资源泄漏。

#3


不会造成内存泄漏(Memory   Leak),但有可能造成资源泄漏(Resource   Leak)。
这两句话的作用只是用来恢复原来的画笔和画刷。如果你的程序是要长时间使用,并且这个函数是要反复被使用的,那么,建议你加上去.如果只是一般性的使用,价不加也无所谓.
(我就因为没有加,字的颜色把WINDOWS的颜色都改变了..........但是没有内存泄漏)

#4


那么原来的pen是个什么状态?
不用新的可行性有多少?

#5


pOldPen这指针默认就存在吗?
==========================
你是想问原来dc中是不是有一个画笔吧?dc中应该有一个默认的画笔.
为什么OldPen一定要被替换才行呢?
==========================
不替换也行,只不过你一直用的就是新的画笔就是了.

#1


不调用dc.SelectObject(pOldPen);的话
dc一直使用的是pen

#2


否则pen所占用的GDI资源无法销毁,会造成资源泄漏。

#3


不会造成内存泄漏(Memory   Leak),但有可能造成资源泄漏(Resource   Leak)。
这两句话的作用只是用来恢复原来的画笔和画刷。如果你的程序是要长时间使用,并且这个函数是要反复被使用的,那么,建议你加上去.如果只是一般性的使用,价不加也无所谓.
(我就因为没有加,字的颜色把WINDOWS的颜色都改变了..........但是没有内存泄漏)

#4


那么原来的pen是个什么状态?
不用新的可行性有多少?

#5


pOldPen这指针默认就存在吗?
==========================
你是想问原来dc中是不是有一个画笔吧?dc中应该有一个默认的画笔.
为什么OldPen一定要被替换才行呢?
==========================
不替换也行,只不过你一直用的就是新的画笔就是了.