Как сохранить и восстановить данные в Edit Box диалогового окна

В процессе разработки программы возникает необходимость в сохранении
и восстановлении данных введённых в 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)

Похожие записи

WaveMaker Visual Assembly Studio and WaveMaker Rap... На сайте www.wavemaker.com сообщается о выходе двух новых продуктов: WaveMaker Visual Assembly Studio и WaveMaker Rapid Deployment Framework for Enter...
Как обработать сообщение от CTreeCtrl.... В литературе TreeCtrl называют - древовидный список, по аналогии с деревом. После создания дерева (TreeCtrl) с ветвями, или узлами(item)...
Меняю взляд на вещи А заставила меня это сделать статья, которую я прочитал по наводке из поста блога Алёна C++ . Статья называется "Редкая профессия". Это статья Евге...
Как сохранить и восстановить данные диалогового ок... При работе с диалоговым окном возникает необходимость сохранять и восстанавливать данные полученные в результате действия программы. Для этого мы исп...

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

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

Страницы

Метки

Рубрики

Свежие записи

Свежие комментарии

Июнь 2018
Пн Вт Ср Чт Пт Сб Вс
« Апр    
 123
45678910
11121314151617
18192021222324
252627282930  

Архивы