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函数内部为什么没有自动把没用的资源释放掉?

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM