zoukankan      html  css  js  c++  java
  • 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 变量的那个控件/窗体的类

  • 相关阅读:
    SuperMap关联外部数据库
    617Tips
    第一次上课
    文本字段也可做自定义专题图
    Oracle笔记一
    Oracle笔记二
    复制追加数据集失败
    夏季恋语
    最浪漫的事
    爱了你那么多年
  • 原文地址:https://www.cnblogs.com/sitemaker/p/2588041.html
Copyright © 2011-2022 走看看