解决方案 »

  1.   

    贴出代码出来看一看!
    另外可以用GDIView查看到底是什么GDI资源泄漏,也好有个排查的方向!
      

  2.   

    代码太大了,不好贴,关键是不知道哪里出错了,使用GDIView追踪到 只有设备上下文这个增加,其他的都不变
      

  3.   

    在程序调用 CDialog::OnPaint(); 后,会出现GDI资源增加的情况?
    这个是怎么确定出来了。OnPaint是程序自己调用的。
      

  4.   

    最可能的情况是 SelectObject()之后没有DeleteObject()
      

  5.   

    CEdit 你得需要自定义类。。
      

  6.   

    CDialog::OnPaint(); 那就一段代码,全部注释了,然后一点一点的把注释解了,看哪出问题还不容易。
      

  7.   

    你全局搜索
    CreateSolidBrush 
    CreatePen 
    CreateFont
    CreateBitmap
    CreateRectRgnLoadBitmap 
    LoadIcon 
    LoadImageGetDC 
    CreateCompatibleDC 
    CreateCompatibleBitmap
    等等,看看与之相对应的有没有DeleteObject(ReleaseObject)
      

  8.   

    这个在任务管理器里面就能看出来。我是通过最大最小化窗口使窗口重绘观察的,GDI资源大概每次增加2
      

  9.   

    如下代码:
    CBrush brush(RGB(255,0,0));
    CBrush* oldbrush;
    CPaintDC dc(this);
    oldbrush = dc.SelectObject(&brush);
    ....
    dc.SelectObject(&oldbrush);
    之后还用DeleteObject()吗?
      

  10.   

    如下代码:
    CBrush brush(RGB(255,0,0));
    CBrush* oldbrush;
    CPaintDC dc(this);
    oldbrush = dc.SelectObject(&brush);
    ....
    dc.SelectObject(&oldbrush);
    之后还用DeleteObject()吗?不需要,这个MFC都已经封装好了,在MFC 的CGdiObject类析构函数中会自动DeleteObject