CGdiObject::DeleteObject()和CDC::DeleteDC()在任何情况下都必须自己处理,当然限于是你自己写的.

解决方案 »

  1.   

    CGdiObject::DeleteObject()是用来删除设备说明表内的成员的,比如画笔,刷子,区域等
    CDC::DeleteDC()是用来释放整个说明表的
      

  2.   

    如果是你自己创建的,Gdi Object,比如用brush,pen 等的create方法自己创建的东西,那就自己调CGdiObject::DeleteObject()来释放他们。关于CDC的也是一样。楼上的说的都不错啦
      

  3.   

    那象CBrush bb(RGB(128,128,128));
    CPen LinePen(PS_SOLID,2,RGB(128,128,128));没有用create方法
    要不要用CGdiObject::DeleteObject();
      

  4.   

    你不用DeleteObject(),在离开所在函数时对象会自动被析构,在析构函数中自动调用了DeleteObject()
      

  5.   

    CPen LinePen(PS_SOLID,2,RGB(128,128,128));
    // 还是用了,不过是在构造函数内,你看不到
    dc.SelectObject(LinePen);
    // 现在LinePen已经可以被选进DC了我认为,只要是能被选进DC的GDI Object,都要 DeleteObject()
      

  6.   

    搞胡涂了,两位说法不一样,不过我在《VC技术内幕》上看是没有用DeleteObject(),到底应该怎么样,那位高手说说,分不够在加
      

  7.   

    多删除一次没问题,Window略过,少删除就资源泄漏了