您的位置:首页 > 其它

CStatic::SetBitmap导致的内存泄露问题

2012-07-30 14:51 281 查看
由于需要动态的改变控件的图标显示,程序中对同一控件多次调用了SetBitmap方法,结果导致了内存泄露。

解决方法如下:

HBITMAP hBmpOn;
HBITMAP oldBmp;
image.Load(_T("res/led_green.png"));
hBmpOn = image.Detach();

oldBmp = (*it)->SetBitmap(hBmpOn);
if ( oldBmp != NULL )
{
DeleteObject(oldBmp);
}

if ( hBmpOn != NULL )
{
DeleteObject(hBmpOn);
}


关键是需要手动将以前set过的资源用DeleteObject释放掉。

问题虽然解决了,但是不太明白为什么SetBitmap函数内部为什么没有自动把没用的资源释放掉?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: