代码之家  ›  专栏  ›  技术社区  ›  Mark Ingram

谁负责清除图像列表中的内存?

  •  2
  • Mark Ingram  · 技术社区  · 17 年前

    m_pImageList->Replace(...);  
    

    http://msdn.microsoft.com/en-us/library/k10cwcdb.aspx

    MSDN不太清楚谁应该对此负责。

    1 回复  |  直到 17 年前
        1
  •  3
  •   ChrisN    17 年前

    正如你所说, CImageList 是一个简单的包装器 HIMAGELIST CImageList::Replace 只是打电话 ImageList_Replace ,其文件规定:

    这个 函数将位图复制到内部数据结构。一定要使用 DeleteObject 要删除的函数 hbmImage hbmMask

    这意味着您可以创建一个 CBitmap CImageList::Replace ,图像列表将从中获取位图的副本 位图 对象的析构函数(或者更确切地说,是 CGdiObject 基类析构函数)将调用 删除对象

    当 CImageList 析构函数执行时,调用 ImageList_Destroy 删除基础 ,这将删除图像列表所拥有的所有位图。

    推荐文章