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

 

 

相关文章:

  • 2021-08-06
  • 2022-03-05
  • 2021-08-01
  • 2021-12-21
  • 2022-12-23
  • 2018-07-02
  • 2021-08-07
猜你喜欢
  • 2021-11-01
  • 2020-02-06
  • 2021-11-03
  • 2022-01-05
  • 2021-04-27
  • 2021-12-03
  • 2021-10-22
相关资源
相似解决方案