Создание диалогового окна когда главным является «Документ» (Лабораторная работа № 7 по VisualC++ 2005), страница 3

 Диалоговые окна могут быть модальными и немодальными. Пока работает модальное окно, все остальные окна работать не могут. В то же время могут одновременно работать несколько немодальных окон.

Чтобы вызвать DoModal(), нужно создать объект класса Dlg. Назовём его dlg1.

Нужно также помнить, что обработка данных происходит в классе документа (CdiaDoc), а результаты выводятся в CdiaView. Поэтому в CdiaDoc нужно определить элемент данных m_stroka типа CString с меткой доступа public. Как уже было сказано выше, для этого нужно выделить класс CdiaDoc, вызвать контекстное меню, выбрать Add/Add Variable и в окне ввести public, CString, m_stroka.

          Ниже приводится текст обработчика.

void CdiaView::OnFileShowdialog()

{

    Dlg dlg1;//Создалиобъект

    intrezult=(int)dlg1.DoModal();//Чтобы отобразить диалог в модальном режиме вызвали DoModal(). При щелчке на кнопке Ок,возвращается значение IDOK

if(rezult==IDOK)

{

        CdiaDoc*pDoc=GetDocument();

        ASSERT_VALID(pDoc);

        pDoc->m_stroka=dlg1.m_text;//Занесливэлемент

//данных m_stroka класса Doc значение m_text класса Dlg

        Invalidate();//Обьявлено, что содержимое окна //недействительно и может быть заменено

// TODO: Add your command handler code here

}

}

Внимание! Чтобы класс CdiaView мог работать с классом Dlg, необходимо в файл diaView.cpp добавить

 #includeDlg.h

2.4.4 Отображение в клиентском окне

     Известно, что для отображения в клиентском окне  служит метод OnDraw().

void CdiaView::OnDraw(CDC* pDC/*pDC*/)

{

    CdiaDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    if (!pDoc)

        return;

    pDC->TextOutA(0,0,pDoc->m_stroka);//Добавлено

    // TODO: add draw code for native data here

}

          В нём добавлено вызов с помощью указателя pDC на контекст CDC метода TextOutA() вывода строки символов на экран в область с координатами (0, 0). Выводимый текст содержит переменная m_stroka класса CdiaDoc. Поэтому для работы с  ней используется указатель pDoc.

Программа готова. После её запуска выбрать пункт меню Show Dialog… В появившемся диалоговом окне нажать кнопку. Убедиться в появлении заданной строки символов в текстовом окне. После выбора кнопки Ok этот же текст отобразится в клиентской области главного окна.

3 Контрольные вопросы

1 Как создать диалоговое окно?

2 Как создать класс диалогового окна?

3 Как создать обработчик нажатия стартовой кнопки ?

4 Зачем нужно создавать элементы данных типа CString для классов Dlg  и CdiaDoc?

5 Зачем нужна функция DoModal() и что она возвращает?

6 Чем модальные окна отличаются от немодальных?

7 Для чего служит функция UpdateData(), какие значения принимает её параметр и что они означают?

8 Для чего служит функция Invalidate()?

9 Какая функция служит для вывода строки символов на экран и какие у неё параметры?

10 Как создать обработчик события- выбора пункта меню ?

Список литературы

1 Айвор Хортон  VISUAL C++ 2005 Базовый курс, «Диалектика», Москва*Санкт-Петербург*Киев , 2007г.

2 Сергеев А.П., Терен А.Н. Программирование в VISUAL C++ 2005 «Диалектика», Москва*Санкт-Петербург*Киев , 2006г.