VC6.0 MFC下,初始化时有一个列表CListCtrl 里面显示着所有的服务器类型。然后通过一个下拉式列表来选择不同的服务器类型在初始化的时候,我对这个CListCtrl每一行都做了SetItemData(i, i) 其中i为行号.我通过选择下拉式列表选择不同的服务器类型进行过滤,要对列表进行刷新。自己写了一个刷新列表的函数void CFViewServerList::RefreshList()
{// 刷新服务器信息列表
m_listServer.DeleteAllItems();
int iCount = m_listServer.GetHeaderCtrl()-> GetItemCount(); 

for(int j = 0; j < iCount; j++) 

m_listServer.DeleteColumn(0); 


InitListServerInfo();
}
现在的问题是:调用了m_listServer.DeleteAllItems();这句后,我在初始化时做的SetItemData(i, i)里的值是否还在?

解决方案 »

  1.   

    那我如何既能把原来有的LIST中的数据删除了,又保留setitemData时的值?
      

  2.   

    删除节点后,SetItemData中设置的值也会消失,所以这地方要注意,如果是设置指针的话在删除该节点时,必须将指针对应的内存空间删除或者转移,否则就会内存泄露。对于想要删除节点并保留SetItemData中的值的问题,只能在删除前做工作,保存到数组或者列表中,这样做是很麻烦,其他好像也没有简单的方法。一下,如果有高人提供好方法,我也学习一下。呵呵!up!
      

  3.   


    很简单,new一个空间,在你setitemData时顺便把值存到空间里边。