下面代码是改变窗口背景的颜色,有什么问题?使用后,当拖动和移动窗口时候,查看任务管理器的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;
}
{
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;
}
这个导致的.给分哪.每次CREATE的创建一个.DESTROY的时候销毁.
hbr=CreateSolidBrush(RGB(125,125,255)); 这个画刷是固定的
可否弄成全局变量.
直接在你的函数中使用,这样就会不创建很多次,只需要创建一次,在程序退出的时候,记得销毁这个object
就可以了 .
2 刷子用完释放了么
hbr = hbr2;
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