今天编了一个小程序,内存消耗却很大,随着时间用的越来越久,内存消耗越来越大。研究了一下,原来CBRUSH对象没有释放。
原来程序如下:
HBRUSH CPORTSetting::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr ;
COLORREF backColor =(COLORREF) GetSysColor(COLOR_CAPTIONTEXT); //office 2003背景色
//return CreateSolidBrush(backColor); //创建背景刷子
return hbr;
}
只需要将hbr声明为成员变量,在CPORTSetting的构造函数中初始化,在析构函数中使用DeleteObject释放hbr对象即可。
修改后代码如下:
CPORTSetting::CPORTSetting()
{
COLORREF backColor =(COLORREF) GetSysColor(COLOR_CAPTIONTEXT); //office 2003背景
hbr=::CreateSolidBrush(backColor); //创建背景刷子 }
///
CPORTSetting::~CPORTSetting()
{
DeleteObject(hbr);
}
//
HBRUSH CPORTSetting::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
return hbr;
}