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

由于需要动态的改变控件的图标显示,程序中对同一控件多次调用了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函数内部为什么没有自动把没用的资源释放掉?

 

 

posted on 2012-07-30 14:51  薄桜の霊  阅读(3542)  评论(7编辑  收藏  举报

导航