От: Dmitry Panferov
Дата: 10 января 2000 г. 3:51
Тема: MFCByStep - question
Пример: Есть MDI приложение, из меню вызывается диалоговое окно в котором
выводятся данные из документа и затем поступают обратно в документ,
в соответствии с новыми данными должно измениться и представление документа
Создаем точно такое приложение как в PR4. Все один к одному. Зайдем в Resource и помести на диалоговое окно Edit Box и свяжем его с переменной типа CString. Имя дайте m_Edits, как в "Шаг 30 - Первый проект с AppWizard".
Теперь нам надо создать переменную в классе документа для хранения и отображения. Класс документа CPr4Doc. Выделите его в ClassView, нажмите правую кнопку мыши и Add Member Variable. Тип переменной CString имя stringData, а тип доступа public. Жмите OK.
Переменную необходимо инициализировать - это в функции OnNewDocument.
BOOL CPr4Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
stringData=""; // наша переменная
return TRUE;
}
Для отображения этой переменной необходимо изменить функции рисования OnDraw класс просмотра CPr4View.
void CPr4View::OnDraw(CDC* pDC)
{
CPr4Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(10,10,pDoc->stringData); // вывести надпись
}
А вот теперь можно менять функцию нажатия на кнопку мыши в виде.
void CPr4View::OnLButtonDown(UINT nFlags, CPoint point)
{
CNewDialog cdialog; // объект класса
if (cdialog.DoModal()==IDOK) // если пользователь OK выбрал
{
CPr4Doc* pDoc = GetDocument(); // получить класс документа
pDoc->stringData=cdialog.m_Edits; // поменять переменную класса документа
Invalidate(); // обновить вид
}
CView::OnLButtonDown(nFlags, point);
Смотрим, как будет работать.
Приложение MDI работает немного не так как SDI. Создавая новый документ вы создаете дубликаты классов Doc и View. Два документа, два дубликата, три документа - три дубликата. В работающем приложении они независимые. Ваш ввод будет обрабатывать тот вид, который сейчас активный.
Каждый документ в приложении MDI независим.