Есть два способа получить данные от контролов.
Способ первый:
создать в классе диалога переменные связанные с этими контролами (это может сделать визард)
выглядить это будет примерно так
class CTestDlg : public CDialog
{
...
CEdit edit1;
CEdit edit2;
CEdit edit3;
...
};
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT1, edit1);
DDX_Control(pDX, IDC_EDIT2, edit2);
DDX_Control(pDX, IDC_EDIT3, edit3);
...
}
Потом можно создать массив указателей на нужные нам контролы и использовать его при сохранении
void CTestDlg::OnBnClickedButton1()
{
CFile file(_T("file_to_save.txt"),
CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite);
file.SeekToEnd();
UpdateData();
static CWnd* controls[] = { &edit1, &edit2, &edit3 };
for(int i = 0; i < sizeof(controls) / sizeof(controls[0]); i++)
{
CString text;
controls[i]->GetWindowText(text);
file.Write(text.GetString(), text.GetLength());
}
}
Вариант два: не создавать в классе переменных для контролов, тогда нам потребуются их ID (они определены в ресурсах)
void CTestDlg::OnBnClickedButton1()
{
CFile file(_T("file_to_save.txt"),
CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite);
file.SeekToEnd();
static int controlsID[] = | IDC_EDIT1, IDC_EDIT2, IDC_EDIT3 };
for(int i = 0; i < sizeof(controlsID) / sizeof(controlsID[0]); i++)
{
CString text;
GetDlgItemText(controlsID[i], text);
file.Write(text.GetString(), text.GetLength());
}
}