«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
Институт инженерных технологий и естественных наук
Кафедра прикладной информатики и информационных технологий
Отчет по лабораторной работе №8
Тема работы: Вызов диалоговых окон из меню Windows Application (на базе одно документного приложения). Решение задач с использованием различных элементов графического интерфейса.
студента очного отделения
3 курса 07001504 группы
Марко С. Тангуила
Проверил:
Старший преподаватель
Зайцева Наталья Олеговна
БЕЛГОРОД, 2018
Цель работы
Изучить включение в приложение Single document своих диалоговых окон. Научиться передавать значения между диалоговыми окнами и главным окном приложения. Изучить работу модального и немодального диалога. Получить практические навыки в разработке программ на основе MFC.
На рисунке 1 предоставлен результат работы пунктов меню. Открыли модальное окно.

Рисунок 1 – Работа пунктов меню.
Claba8Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDC-TextOut(0, 0, pDoc-str);
void Claba8View::OnMyDlg()
{
CMyDlg dlg;
Claba8Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
if (dlg.DoModal() == IDOK) pDoc-str = dlg.m_edDlg; Invalidate();
}
class CMyDlg_2 : public CDialog
{
public:
CMyDlg_2(CWnd* pParent = NULL);
CMyDlg_2(CView* pView);
CView* m_pView;
CMyDlg_2::CMyDlg_2(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg_2::IDD, pParent)
{
{{AFX_DATA_INIT(CMyDlg_2) m_tx = _T("");
}}AFX_DATA_INIT}
CMyDlg_2::CMyDlg_2(CView* pView){
m_pView = pView;}
BOOL CMyDlg_2::Create(){
return CDialog::Create(CMyDlg_2::IDD);}
class Claba8View : public CView{
protected:
Claba8View();
DECLARE_DYNCREATE(Claba8View)
public:
CLab_08Doc* GetDocument();
CMyDlg_2* m_pDlg;
Claba8View::Claba8View(){
m_pDlg = new CMyDlg_2(this);}
Claba8View::~Claba8View(){
delete m_pDlg;}
void Claba8View::OnModalDlg(){
m_pDlg-Create();}
void CMyDlg_2::OnCancel(){
m_pView-PostMessage(WM_END); CDialog::OnCancel();}
#define WM_END WM_USER + 10
BEGIN_MESSAGE_MAP(Claba8View, CView)
//{{AFX_MSG_MAP(Claba8View)
ON_COMMAND(ID__1, OnMyDlg)
ON_COMMAND(ID__2, OnModalDlg)
}AFX_MSG_MAP
ON_MESSAGE(WM_END, OnEnd1)
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
LONG Claba8View::OnEnd1(){
m_pDlg-DestroyWindow(); return 0;}
UpdateData(1); m_pView-Invalidate();
Claba08Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc-str = m_pDlg-m_tx;
pDC-TextOut(0, 0, pDoc-str);