我想在mfc中的一个对话框中,选中一个城市之后,从已经写好的文本文件ticket.txt中读出对应城市的信息,我该怎么实现?文本文件的格式为所属城市,景点名称,景点开放时间,景点余票,价格。请给出详细步骤
时间: 2024-03-02 15:54:08 浏览: 69
VC++基于mfc 实现对话框打开读取txt文件
5星 · 资源好评率100%
好的,下面是实现步骤:
1. 在对话框中添加一个下拉框控件,用于选择城市。在资源视图中找到对应的对话框,右键选择添加控件,选择“组合框”,然后在属性中设置下拉框的选项。
2. 在对话框类的头文件中添加以下变量:
```c++
CString m_strCity; // 用于保存选中的城市名称
CString m_strTicketFilePath; // 用于保存 ticket.txt 文件的路径
```
3. 在对话框类的 OnInitDialog() 函数中初始化下拉框控件的选项,以及 ticket.txt 文件路径。可以使用以下代码:
```c++
// 初始化下拉框控件
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CITY);
pComboBox->AddString(_T("北京"));
pComboBox->AddString(_T("上海"));
pComboBox->AddString(_T("广州"));
pComboBox->AddString(_T("深圳"));
pComboBox->SetCurSel(0); // 默认选中第一个城市
// 初始化 ticket.txt 文件路径
m_strTicketFilePath = _T("D:\\ticket.txt"); // 请将文件路径修改为实际路径
```
4. 在对话框类的 OnCbnSelchangeComboCity() 函数中响应下拉框控件的选择事件,保存选中的城市名称,并读取对应城市的信息。可以使用以下代码:
```c++
void CMyDialog::OnCbnSelchangeComboCity()
{
// 获取选中的城市名称
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CITY);
pComboBox->GetLBText(pComboBox->GetCurSel(), m_strCity);
// 读取对应城市的信息
CString strLine;
CStdioFile file;
if (file.Open(m_strTicketFilePath, CFile::modeRead))
{
while (file.ReadString(strLine))
{
CStringArray arrFields;
int nCount = ParseString(strLine, ',', arrFields); // 解析每一行记录
if (nCount == 5 && arrFields[0] == m_strCity) // 如果是对应城市的记录
{
CString strInfo = _T("景点名称:") + arrFields[1] + _T("\n");
strInfo += _T("景点开放时间:") + arrFields[2] + _T("\n");
strInfo += _T("景点余票:") + arrFields[3] + _T(" 张\n");
strInfo += _T("价格:") + arrFields[4] + _T(" 元\n");
MessageBox(strInfo, _T("景点信息"), MB_OK);
break;
}
}
file.Close();
}
}
```
其中,ParseString() 函数用于解析每一行记录,可以使用以下代码实现:
```c++
int CMyDialog::ParseString(CString strSource, TCHAR chSep, CStringArray& arrFields)
{
int nCount = 0;
int nPos = 0;
while (nPos != -1)
{
nPos = strSource.Find(chSep);
CString strField;
if (nPos != -1)
{
strField = strSource.Left(nPos);
strSource = strSource.Mid(nPos + 1);
}
else
{
strField = strSource;
}
if (!strField.IsEmpty())
{
arrFields.Add(strField);
nCount++;
}
}
return nCount;
}
```
这样,当用户选择城市并点击确定按钮后,程序会从 ticket.txt 文件中读取对应城市的信息,并显示在消息框中。
阅读全文