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 变量的那个控件/窗体的类

  • 相关阅读:
    django第八天总结
    获取文件名的基本信息
    单个文件上传与多个文件上传
    return .php
    upload.php
    string.php
    upload.php
    upload.html
    获取上传文件
    那些年被我坑过的Python——牵一发动全身 第十一章MySQL、ORM
  • 原文地址:https://www.cnblogs.com/sitemaker/p/2588041.html
Copyright © 2011-2022 走看看