mfc如何在A对话框读取B对话框list control控件的数据,读取到list control的某一列数据,按照成绩由高到低排序再生成新的表格有姓名,成绩,排名。新的表格存在A对话框的list control控件中,如何可行的实现
时间: 2024-05-07 14:23:35 浏览: 78
可以通过以下步骤在A对话框中读取B对话框的list control控件数据:
1. 在A对话框中添加一个list control控件,用于显示排序后的数据。
2. 在B对话框中获取list control控件中的数据,可以使用以下代码:
```
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_CONTROL_ID); //获取list control控件指针
int nItemCount = pListCtrl->GetItemCount(); //获取list control中项的数量
for (int i = 0; i < nItemCount; i++)
{
CString strName = pListCtrl->GetItemText(i, 0); //获取第一列的数据(姓名)
CString strScore = pListCtrl->GetItemText(i, 1); //获取第二列的数据(成绩)
//将姓名和成绩保存到一个数据结构中,如std::vector或自定义结构体等
}
```
3. 对保存数据的数据结构按照成绩由高到低排序,可以使用STL的sort函数或自定义排序函数。
4. 在A对话框中将排序后的数据添加到list control控件中,可以使用以下代码:
```
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_CONTROL_ID); //获取list control控件指针
pListCtrl->DeleteAllItems(); //清空list control控件中的所有项
int nRank = 1;
for (auto it = vecData.begin(); it != vecData.end(); it++)
{
CString strRank;
strRank.Format(_T("%d"), nRank++); //生成排名列的数据
pListCtrl->InsertItem(nIndex, strRank); //插入排名列的数据
pListCtrl->SetItemText(nIndex, 1, it->strName); //插入姓名列的数据
pListCtrl->SetItemText(nIndex, 2, it->strScore); //插入成绩列的数据
}
```
其中,IDC_LIST_CONTROL_ID为A对话框中list control控件的ID,vecData为保存数据的数据结构。
阅读全文