我创建了一个基于SDI的应用程序,在程序中需要调用两个自定义对话框的,当应用程序正常运行时,GDI资源是稳定的,每次最小化还原的时候,GDI对象会增加。我试了一下,如果在view中把有关两个对话框的语句注释掉,GDI是正常,我想应该是由于对话框在还原时重绘引起的GDI资源增加,不知该如何处理,请高手指点!小弟拜谢

解决方案 »

  1.   

    我在做对话框的时候没有用OnPaint,只是定义了一些简单button、listctrl和static控件,此外还用OnCtlColor修改了一些控件的颜色。
      

  2.   

    那把OnCtlColor贴出来吧。
    其实还是贴代码比较好,方便大家查找错误
      

  3.   

    其中一个对话框的OnCtlColor,另一个与这个类似
    HBRUSH CDutyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    BOOL bReleaseDC=FALSE;
    if(pDC==NULL)
    {
    pDC=GetDC();
    bReleaseDC=TRUE;
    } HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if (nCtlColor==CTLCOLOR_STATIC)
    {
    pDC->SetTextColor(RGB(255,255,0));
    }
    if (nCtlColor==CTLCOLOR_DLG||nCtlColor==CTLCOLOR_STATIC)
    {
    pDC->SetBkColor(RGB(0,0,0));
    HBRUSH m_Bkdlg=CreateSolidBrush(RGB(0,0,0));
    return m_Bkdlg;
    }

    if(bReleaseDC)
    { ReleaseDC(pDC);
    } // TODO: Return a different brush if the default is not desired
    return hbr;
    }