В процессе разработки программы возникает необходимость в сохранении
и восстановлении данных введённых в Edit Box, диалогового окна.
Так как в найденных мной примерах в Интернете в большинстве приведены
примеры для переменных типа CString, мы рассмотрим вариант для типа int.

С помощью мастера создания приложений сгенерируем заготовку простейшего диалогового окна.
Последовательность действий:
- в Microsoft Visual C++ нажать File и выбрать New.
- на вкладке Projects выбрать MFC AppWizard (exe) и ввести название проекта, например edit.
- на первом шаге выбрать Dialog based.
- во втором и третьем без изменений, а в четвертом на выбрать CEditDlg, и нажать Finish.

Для примера напишем маленькую программку, которая будет вычислять сумму двух чисел, а вводные данные и результат можно будет сохранить в файле для последующего
вызова в программу.
С помощью Visual Studio создать диалоговое окно в котором будет находиться:
- три кнопки "Сохранить"- которая будет сохранять данные текстовых полей в файле,"Извлечь"- которая будет
извлекать данные из файла в текстовые поля, "Результат"- при нажатии на которую и будет
производиться расчёт, а также кнопку "ОК"- для выхода из программы. (Индификаторы создаются автоматически, но мы присвоим свои имена,
для кнопки "Сохранить"- IDC_BUTTON_SAVE,
для кнопки "Извлечь"- IDC_ BUTTON_OPEN
и для кнопки "Результат"- IDC_BUTTON_RES.
- три текстовых поля для занесения и получения данных, а также два статических знака + и = между текстовыми полями.
Далее при помощи ClassWizard присваиваем текстовым полям значения переменных, в моём случае m_x, m_y, m_z. При этом тип всех переменных устанавливается как int. Далее не выходя из ClassWizard создаём функции для кнопок
"Сохранить", "Извлечь", "Результат", и редактируем код программы.
В начале напишем код, который при нажатии кнопки "Результат" будет вычислять сумму двух чисел и выводить результат в третье текстовое поле.
Для этого через ClassWizard создаём функцию обработки для кнопки "Результат" и запишем в ней код, который будет вычислять сумму двух чисел:

void CEditDlg::OnButtonRes()
{
UpdateData(TRUE);//
m_z = m_x + m_y;
UpdateData(FALSE);
}

Теперь после компиляции запустим программу введём два числа и нажав кнопку "Результат" получим сумму двух чисел.
Хорошо бы запомнить эти значения в каком-нибудь файле, чтобы в случае необходимости восстановить их.
Для этого вначале с помощью ClassWizard создадим функции обработки для кнопок "Сохранить" и "Извлечь", а затем создадим
в них следующий код:

void CEditDlg::OnButtonSave()
{

// TODO: Add your control notification handler code here
{
CFile file("SAVE.DAT", CFile::modeWrite | CFile::modeCreate | CFile::typeBinary);
// создать файл
CArchive ar(&file, CArchive::store); // на основе него объект архив
ar << m_x; // записать в архив значения переменных которые
ar << m_y; // были занесены пользователем и появились в результате
ar << m_z; // и появились в результате вычисления
ar.Close(); // закрыть архив
file.Close(); // закрыть файл
}
}
void CEditDlg::OnButtonOpen()
{

// TODO: Add your control notification handler code here
// создание объекта и открытие файла для чтения

{
CFile file("SAVE.DAT", CFile::modeRead|CFile::typeBinary);
CArchive ar(&file, CArchive::load);
ar >> m_x;
ar >> m_y;
ar >> m_z;
UpdateData(FALSE);
ar.Close();
file.Close();
}
}

Теперь вычислив сумму двух чисел мы можем сохранить значения слагаемых и суммы в файле SAVE.DAT, завершив работу с программой есть возможность восстановить предыдущие значения.

загрузить исходник

© Goodluck Дмитрий (Cema)

От dmitry

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *