• CTreeCtrl SetItemData 释放问题


    有时候要在每个树节点上,增加一些额外的数据,这时就可以用SetItemData(HTREEITME,DWORD);

    节点额外数据内存的释放,我们可以响应TreeCtrl的TVN_DELETEITEM事件

    void CAppDlg::OnDeleteItem(NMHDR* pNMHDR, LRESULT* pResult)
    {
     TVITEM& item = ((LPNMTREEVIEW)pNMHDR)->itemOld;

     // free item data, ignore invalid shell items
     if (item.lParam != 0)
            delete (sItemData )item.lParam;//这里就会把你的内存释放掉
     *pResult = 0;

    }

    .h文件

    afx_msg void OnDeleteItem(NMHDR* pNMHDR, LRESULT* pResult); //删除项

    .cpp文件

    ON_NOTIFY(TVN_DELETEITEM, IDC_TREE1, OnDeleteItem)

    void CFileView::OnDeleteItem(NMHDR* pNMHDR, LRESULT* pResult)
    {
     TVITEM& item = ((LPNMTREEVIEW)pNMHDR)->itemOld;

     // free item data, ignore invalid shell items
     if (item.lParam != 0)
     {
     delete (ItemData*)item.lParam;//这里就会把你的内存释放掉
     }
     *pResult = 0;

    }

    其中 CFileView 为控件的父窗口,即包含了 CTreeCtrl 变量的那个控件/窗体的类

  • 相关阅读:
    easyui-tabs扩展根据自定义属性打开页签
    nhibernate 3.x新特性
    c# dynamic的属性是个变量
    草稿
    好番记录
    今日内容
    PHP Filter
    PHP Filesystem
    PHP Directory 函数
    PHP Date/Time 函数
  • 原文地址:https://www.cnblogs.com/sitemaker/p/2588041.html
Copyright © 2020-2023  润新知