Диалог для исследования решений
В данный момент полезно запустить приложение и поучиться сражаться с ошибками, которые вызваны тем, что классы приложения не очень хорошо знакомы между собой. Добавьте директиву:
#include "ChildView.h"
В список директив файла ParamDlg.cpp, а также директиву:
#include "ParamDlg.h"
В список директив файла ChildView.cpp. После этого исправления вы увидите еще одно сообщение об ошибке, которое напомнит вам о том, что еще не реализована работа с диалогом в немодальном режиме. Для этого надо немного потрудиться. Введите в класс CChildView реакцию на событие выбора пользователем команды меню ID_EDIT_PARAMETERS. Напомним, что это делается с помощью кнопки Events окна Properties. В обработчике мы открываем диалог в немодальном режиме:
void CChildView::OnEditParameters(void) { //===== Если диалог не открыт, if (Im_pDlg) { //== Динамически создаем объект диалогового класса m_pDlg = new CParamDlg(this); //== и после этого создаем окно диалога m_pDlg › Create(IDD_PARAM); } }
В окне свойств для формы диалога установим в True свойство visible. В классе cParamDlg следует переопределить виртуальную функцию PostNcDestroy, в теле которой необходимо освободить память, занимаемую объектом диалогового класса:
void CParamDlg::PostNcDestroy(void) { delete this; }
После этого диалог должен работать. Задайте точечный источник поля в узле 100, и вы увидите график решения, которое имеет вид, показанный на рис. 11.5.