Лабораторная работа №17 по VISUALC++ 2005
«Сериализация результатов табуляции функции при использовании диалога»
1 Задание
Создать и выполнить однодокументное Windows-приложение на «родном» C++ с использованием библиотеки MFC. Предусмотреть запуск из меню fileдиалогового режима, чтение из окон текстового редактора исходных данных для табуляции функции, запуск процесса табуляции, вывод результатов в окно списка, а также в файл при выборе пункта меню file->saveили file->saveasи последующее чтение из диска по file->open.
Выражением и исходными данными задаться самостоятельно.
2 Общие указания
Сериализация – процесс записи на диск или чтения из него. Данная работа является продолжением лабораторной работы «Сериализация стандартных объектов при работе с файлами ».
Рассмотрим пример создания приложения с именем ser_dia_tabul.
Ввод исходных данных (double xn, dx, xk) предполагается осуществлять с клавиатуры в диалоговом режиме. Диалоговое окно будет появляться в случае выбора пункта меню Show dialog. В этом окне помимо текстовых окон должна быть кнопка «Пуск». При её нажатии запустится процесс табуляции. Результаты будут выводиться в окно List box а также присваиваться строковой переменной CString str диалогового класса Dlg. При нажатии кнопки OK произойдет копирование строки str в строку CString m_stroka класса Cser_dia_tabulDoc. Эту строку с помощью функции Serialize() можно сохранять на диске и читать, а с помощью OnDraw() выводить на экран.
1).Create project ser_dia_tabul : Project types- MFC,
Templates- MFC Application, Application type - single document.
Убрать флажок Use Unicode libraries.
2) Добавить пункт меню File/Show dialog….
3) Создать обработчик события выбора этого пункта меню и оставить его пока пустым.
4) Создать диалоговое окно. Помимо имеющихся по умолчанию кнопок разместить в нем кнопку «Пуск», три текстовых окна ab| Edit control и одно List box. Против каждого из окон ab|Edit control в окнах Aa Static Text разместить символические имена соответствующих переменных.
5) Щелкнуть на диалоговом окне, вызвать контекстное меню Add class. В появившемся окне ввести имя диалогового класса Dlg.
6) В класс Dlg добавить элементы данных medit1, medit2, medit3 для трех окон ab|Edit control. Предполагается, что в них будут заноситься соответственно xn, dx, xk. Для List box добавить элемент данных mlist1. Вызвать для него properties и выключить сортировку строк (в строке Sort установить false).
6) Создать обработчик события- выбора кнопки «Пуск». В нем запрограммировать табуляцию функции Например для y=log(x) обработчик имеет вид:
void Dlg::OnBnClickedButton1()
{
CString s1;
double x,xn,dx,xk,y;
medit1.GetWindowTextA(s1);
xn=atof(s1);
medit2.GetWindowTextA(s1);
dx=atof(s1);
medit3.GetWindowTextA(s1);
xk=atof(s1);
s1.Format("Результаты:");
for(x=xn;x<=xk;x+=dx)
{
if(x>0)
{
y=log(x);
s1.Format(" x=%lf y=%lf",x,y);
mlist1.AddString(s1);
}
else
{
s1.Format("Нет результата при x=%lf",x);
mlist1.AddString(s1);
}
str+=s1;
}
// TODO: Add your control notification handler code here
}
Чтобы он мог работать, в файл Dlg.cpp нужно добавить #include”Dlg.h” и #include<math.h>.
Здесь используется локальная переменная CString s1. Следует обратить внимание на то, что в цикле формируется str типа CString, являющаяся элементом данных класса Dlg.
7) Заполнить обработчик события- выбора пункта меню «Show Dialog». Ниже приводится его текст.
void Cser_dia_tabulView::OnFileShowdialog()
{
Dlg dlg1;
int rezult=(int)dlg1.DoModal();
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.