我创建一个对话框,通过点击button按钮进入子对话框,在子对话框中进行一系列的操作得出所要存储的数据。我想把这些数据存储之后 在上一级的对话框(也就是初始对话框)中的list control显示。我想做一个映射的关系,也就是操作后得到的结果映射到存储结构,list control再取出存储结构中的数据进行显示,并且可以对数据进行修改。list有3列数据,其中两列数据是在编辑中存入的,还有一列是序号。请问该怎么办?我看很多人用std::vector但是我是初学,不太会用。希望有人能来帮帮忙!谢谢了 我急用 在线等!
可以用一个结构体存储一行的数据
typedef struct tListData
{
CString strCum1;
CString strCum2;
CString strCum3;
}T_DATA;然后用vector 存储所有行 如: vector<T_DATA> vecData;
vecData.push_back(T_D1)//T_D1为第1行数据结构,以此类推
正如1楼所说
你需要自己定义具体的数据结构
如果你对stl的东西还不是很熟悉
建议你先找些资料看看
不是很复杂
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;
}
还有我在list中对数据的行内容进行修改 排序 删除的话该怎么实现?
麻烦了!
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列数据 }
}
不知道你的子对话框进行的数据编辑,一次编辑多少数据?是编辑listControl中的一行数据还是全部数据?