我想在mfc中的一个对话框中,选中一个城市之后,从已经写好的文本文件ticket.txt中读出对应城市的信息,我该怎么实现?文本文件的格式为所属城市,景点名称,景点开放时间,景点余票,价格。请给出详细步骤
时间: 2024-02-25 15:56:59 浏览: 62
首先,你需要在对话框中添加一个下拉框控件,用于显示城市列表,用户可以选择感兴趣的城市。然后,你需要编写代码来读取ticket.txt文件,并根据用户选择的城市来获取相应的景点信息。
以下是实现这个功能的步骤:
1. 在对话框资源编辑器中添加一个下拉框控件,设置控件ID为IDC_CITY_COMBO,添加城市列表项。
2. 在对话框类的头文件中添加以下变量和方法:
```
CStringArray m_cities; // 保存城市列表
void LoadCities(); // 从文件中加载城市列表
void LoadCityInfo(int index); // 加载选定城市的景点信息
```
3. 在对话框类的OnInitDialog()方法中调用LoadCities()方法来加载城市列表,并将其添加到下拉框控件中。
```
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 加载城市列表
LoadCities();
// 将城市列表添加到下拉框控件中
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_CITY_COMBO);
for (int i = 0; i < m_cities.GetSize(); i++)
{
pComboBox->AddString(m_cities[i]);
}
return TRUE;
}
```
4. 实现LoadCities()方法,从ticket.txt文件中读取城市列表并保存到m_cities数组中。
```
void CMyDialog::LoadCities()
{
CString line;
CStringArray fields;
CStdioFile file(_T("ticket.txt"), CFile::modeRead);
while (file.ReadString(line))
{
// 解析每一行的数据
fields.RemoveAll();
AfxExtractSubString(fields, line, 0, ',');
CString city = fields[0];
// 将城市添加到列表中(如果不存在)
if (m_cities.Find(city) == -1)
{
m_cities.Add(city);
}
}
file.Close();
}
```
5. 实现LoadCityInfo()方法,从ticket.txt文件中读取选定城市的景点信息,并将其显示在列表框控件中。
```
void CMyDialog::LoadCityInfo(int index)
{
CString city = m_cities[index];
CString line;
CStringArray fields;
CStdioFile file(_T("ticket.txt"), CFile::modeRead);
CListBox* pListBox = (CListBox*)GetDlgItem(IDC_INFO_LIST);
// 清空列表框控件
pListBox->ResetContent();
while (file.ReadString(line))
{
// 解析每一行的数据
fields.RemoveAll();
AfxExtractSubString(fields, line, 0, ',');
if (fields[0] != city)
{
continue;
}
// 显示景点信息
CString info = fields[1] + _T("\t") + fields[2] + _T("\t") + fields[3] + _T("\t") + fields[4];
pListBox->AddString(info);
}
file.Close();
}
```
6. 在下拉框控件的OnSelChange()事件中调用LoadCityInfo()方法,根据用户选择的城市来加载相应的景点信息。
```
void CMyDialog::OnCbnSelchangeCityCombo()
{
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_CITY_COMBO);
int index = pComboBox->GetCurSel();
if (index != CB_ERR)
{
LoadCityInfo(index);
}
}
```
以上就是实现在mfc中的一个对话框中,选中一个城市之后,从已经写好的文本文件ticket.txt中读出对应城市的信息的步骤。
阅读全文