标签:
好久没有写随笔了,讲一下今天在Debug过程中遇到的问题:
CListBox(列表框),CListCtrl(报表控件),CTreeCtrl(对控件), CComboBox(组合框)都有的两个这两个函数:SetItemData和GetItemData,用这两个函数给这些控件来绑定对象或者数据结构的指针非常方便。
在Debug过程中,遇到CListCtrl控件和CTreeCtrl的使用,双击树节点获取树节点数据,压入到ListCtrl控间当中;这其中涉及到树控件的过滤功能,我这块的过滤功能是使用树的重建来建立一颗新树。
1、在未过滤之前获取的树节点压入到ListCtrl当中:ListCtrl.SetItemData( 0, (DWORD)pTreeItemInfo1 );
2、过滤后重建树获取树节点压入到ListCtrl当中:ListCtrl.SetItemData( 1, (DWORD)pTreeItemInfo2 );
3、在获取压入到ListCtrl当中的数据时,由于重建树,原有未过滤的树节点已经Destroy,CTreeItemInfo* pTreeItemInfo = (CTreeItemInfo*)ListCtrl.GetItemData(0);
pTreeItemInfo就成为野指针,所以在使用以上两个函数的时候一定注意 要压入堆上申请的空间并且要一直存在,防止野指针的产生。
标签:
原文地址:http://www.cnblogs.com/lee1023/p/4814735.html