CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);pOldPen这指针默认就存在吗?
还有?
为什么OldPen一定要被替换才行呢?
一直对此不解

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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