我创建一个对话框,通过点击button按钮进入子对话框,在子对话框中进行一系列的操作得出所要存储的数据。我想把这些数据存储之后 在上一级的对话框(也就是初始对话框)中的list control显示。我想做一个映射的关系,也就是操作后得到的结果映射到存储结构,list control再取出存储结构中的数据进行显示,并且可以对数据进行修改。list有3列数据,其中两列数据是在编辑中存入的,还有一列是序号。请问该怎么办?我看很多人用std::vector但是我是初学,不太会用。希望有人能来帮帮忙!谢谢了 我急用 在线等!

解决方案 »

  1.   

    晕,这种数据存储看你个人怎么设计了。
    可以用一个结构体存储一行的数据
    typedef struct tListData
    {
         CString strCum1;
         CString strCum2;
         CString strCum3;
    }T_DATA;然后用vector 存储所有行 如: vector<T_DATA> vecData;
         vecData.push_back(T_D1)//T_D1为第1行数据结构,以此类推
      

  2.   

    vector或list都可以
    正如1楼所说
    你需要自己定义具体的数据结构
    如果你对stl的东西还不是很熟悉
    建议你先找些资料看看
    不是很复杂
      

  3.   


    typedef struct tListData
    {
      CString strCum1;
      CString strCum2;
      CString strCum3;
    }T_DATA;
    bool GetListCtrl(vector<T_DATA>& vecData)
    {
    vecData.clear(); int nItems = m_list.GetItemCount();//获取列表总行数 for (int i = 0; i < nItems; i++)
    {
                    T_DATA tTemp;
    tTemp.strCum1 = m_list.GetItemText(i, 0);//第i行第1列
                      tTemp.strCum2 = m_list.GetItemText(i, 1);//第i行第2列
                      tTemp.strCum3 = m_list.GetItemText(i, 2);//第i行第3列 vecData.push_back(tTemp);
    } if (vecData.size() == 0)
    {
    return false;
    } return true;
    }
      

  4.   

    我是说list control怎么读取vector中的内容怎么实现
    还有我在list中对数据的行内容进行修改 排序 删除的话该怎么实现?
    麻烦了!
      

  5.   

    简单的应用,试着去做,不会的看看msdn就行了
      

  6.   


    typedef struct tListData
    {
      CString strCum1;
      CString strCum2;
      CString strCum3;
    }T_DATA;
    bool GetListCtrl(vector<T_DATA>& vecData)
    {
        vecData.clear();    int nItems = m_list.GetItemCount();//获取列表总行数    for (int i = 0; i < nItems; i++)
        {
                    T_DATA tTemp;
            tTemp.strCum1 = m_list.GetItemText(i, 0);//第i行第1列
                      tTemp.strCum2 = m_list.GetItemText(i, 1);//第i行第2列
                      tTemp.strCum3 = m_list.GetItemText(i, 2);//第i行第3列        vecData.push_back(tTemp);        
        }    if (vecData.size() == 0)
        {
            return false;
        }    return true;
    }bool SetListCtrl(vector<T_DATA>& vecData)
    {
        m_list.DeleteAllItems();
        int nIndex = 0;
        for(vector<T_DATA>::itorator itor = vecData.begin(); itor != vecData.end(); itor++ )
        {
              T_DATA tData = (*itor);//从VECTOR中获取每一行数据
              m_list.InsertItem(nIdx, tData.strCum1);//插入行
              m_list.SetItemText(nIdx, 1, tData.strCum2);//设置第2列数据
              m_list.SetItemText(nIdx++, 2, tData.strCum3);//设置第3列数据    }
    }
      

  7.   

    你从vector中取出内容,然后CListCtrl::SetItemText()加入到CListCtrl的Item中不就可以了
      

  8.   

    LZ是要完整代码吧
    不知道你的子对话框进行的数据编辑,一次编辑多少数据?是编辑listControl中的一行数据还是全部数据?