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

  • 相关阅读:
    阻塞赋值和非阻塞赋值
    组合逻辑和时序逻辑
    信道估计常用算法
    Verilog有限状态机FSM
    希尔伯特变换
    微信小程序取消分享的两种方式
    orm 常用字段
    drf获取请求过来时的request
    WeChat--API
    Django之admin源码浅析
  • 原文地址:https://www.cnblogs.com/sitemaker/p/2588041.html
Copyright © 2011-2022 走看看