您的位置:首页 > 其它

GDI对象错误:CBRUSH释放、CreateSolidBrush的内存释放与内存泄露问题及其解决方法

2018-02-23 09:50 931 查看
今天编了一个小程序,内存消耗却很大,随着时间用的越来越久,内存消耗越来越大。研究了一下,原来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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐