下面代码是改变窗口背景的颜色,有什么问题?使用后,当拖动和移动窗口时候,查看任务管理器的GDI对象猛的增长,当达到9999时就变白死了。HBRUSH CMainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr;
if(nCtlColor==CTLCOLOR_STATIC||nCtlColor==CTLCOLOR_BTN||nCtlColor==CTLCOLOR_DLG)
{
hbr=CreateSolidBrush(RGB(125,125,255));
pDC->SetBkColor(RGB(125,125,255));
}
else
{
hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
    return hbr;
}

解决方案 »

  1.   

    hbr=CreateSolidBrush(RGB(125,125,255)); 
    这个导致的.给分哪.每次CREATE的创建一个.DESTROY的时候销毁.
      

  2.   

    When you no longer need the HBRUSH object call the DeleteObject function to delete it. 
      

  3.   

    有个建议
    hbr=CreateSolidBrush(RGB(125,125,255)); 这个画刷是固定的
    可否弄成全局变量.
    直接在你的函数中使用,这样就会不创建很多次,只需要创建一次,在程序退出的时候,记得销毁这个object
    就可以了 .
      

  4.   

    1 GDI windows下到10000就崩的
    2 刷子用完释放了么
      

  5.   

    用一个类的HBRUSH变量 或静态的static HBRUSH hbr2 = CreateSolidBrush(RGB(125,125,255));
    hbr = hbr2;
      

  6.   


    HBRUSH hbr=0;
    HBRUSH CMainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        if(nCtlColor==CTLCOLOR_STATIC||nCtlColor==CTLCOLOR_BTN||nCtlColor==CTLCOLOR_DLG)
        {
            if(!hbr) hbr=CreateSolidBrush(RGB(125,125,255));
            pDC->SetBkColor(RGB(125,125,255));
        }
        else