void CPMAgentManageDlg::OnButtonDelete() { // TODO: Add your control notification handler code here int nGetId; while(m_matrixInfoList.GetSelectedCount() > 0) { POSITION pos = m_matrixInfoList.GetFirstSelectedItemPosition(); if(pos != NULL) { int nItem = m_matrixInfoList.GetNextSelectedItem(pos); CString str; //获取删除矩阵的id号 str=m_matrixInfoList.GetItemText(nItem,0); nGetId=atoi(str); m_matrixInfoList.DeleteItem(nItem); TiXmlDocument *myDocument = new TiXmlDocument(g_sFilefullPath.c_str()); myDocument->LoadFile(); TiXmlNode *RootElement = myDocument->RootElement(); TiXmlNode *root=myDocument->FirstChild("matrixs"); TiXmlNode *pChild=root->FirstChild("matrixnum"); //用到search函数时 for ( pChild=root->FirstChild("matrixnum"); pChild != 0;) { if(FALSE==Search(pChild,nGetId,root)) pChild = pChild->NextSibling("matrixnum"); } myDocument->SaveFile(g_sFilefullPath.c_str()); } } } //查询函数,根据结点查找(遍历) BOOL CPMAgentManageDlg::Search(TiXmlNode *&pChild,int nGetId,TiXmlNode *root) { TiXmlElement *child=pChild->FirstChildElement("matrix"); int idAttribute=(int)atoi(child->Attribute("id")); if (idAttribute==nGetId) { TiXmlNode *temp=pChild->NextSibling("matrixnum"); root->RemoveChild(pChild); //删除 pChild=temp; //删除后把下一个往上挪 return TRUE; } return FALSE; }