Презентация Библиотека Microsoft Foundation Classes (MFC)

Презентация Библиотека Microsoft Foundation Classes (MFC)


Предлагаем ознакомиться с содержанием и скачать для редактирования или печати презентацию «Библиотека Microsoft Foundation Classes (MFC)», содержащую 17 слайдов и доступную в формате ppt. Размер файла доклада составляет 217.00 KB

Просмотреть и скачать

Слайды и текст этого доклада

Глава 8. Библиотека Microsoft Foundation Classes (MFC) МГТУ им. Н. Э. Баумана Факультет Информатика
Рис.1 Глава 8. Библиотека Microsoft Foundation Classes (MFC) МГТУ им. Н. Э. Баумана Факультет Информатика и системы управления Кафедра Компьютерные системы и сети Лектор: д. т. н. , проф. Иванова Галина Сергеевна
Иерархия классов
Рис.2 Иерархия классов
Приложение «Возведение числа в квадрат» С1 – WM_INITDIALOG главного окна; С2 – EN_CHANGE при вводе ч
Рис.3 Приложение «Возведение числа в квадрат» С1 – WM_INITDIALOG главного окна; С2 – EN_CHANGE при вводе числа; С3 – BN_CLICKED кнопки Выполнить; С4 – BN_CLICKED кнопки Следующее; С5 – BN_CLICKED для кнопки Выход; С6 – BN_CLICKED для кнопки OK; С7 – EN_CHANGE при удалении.
Приложение «Возведение числа в квадрат»(2)
Рис.4 Приложение «Возведение числа в квадрат»(2)
Описание класса приложения (Файл Ex1. h): #include "resource. h " // файл уникальных номер
Рис.5 Описание класса приложения (Файл Ex1. h): #include "resource. h " // файл уникальных номеров ресурсов class CEx1App : public CWinApp { public: CEx1App(); // конструктор virtual BOOL InitInstance();// инициализация окна DECLARE_MESSAGE_MAP() // макрос таблицы сообщений };
Таблица, конструктор, объект(Файл Ex1. сpp) BEGIN_MESSAGE_MAP(CEx1App, CWinApp) ON_COMMAND(ID_HELP,
Рис.6 Таблица, конструктор, объект(Файл Ex1. сpp) BEGIN_MESSAGE_MAP(CEx1App, CWinApp) ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() CEx1App::CEx1App() { } CEx1App theApp; // экземпляр приложения
Метод инициализации (Файл Ex1. сpp) BOOL CEx1App::InitInstance() // Метод инициализации { #ifdef _AF
Рис.7 Метод инициализации (Файл Ex1. сpp) BOOL CEx1App::InitInstance() // Метод инициализации { #ifdef _AFXDLL Enable3dControls(); // если MFC в виде DLL #else Enable3dControlsStatic();// если статическая MFC #endif CEx1Dlg dlg; // Создается объект «Окно диалога» m_pMainWnd = &dlg; // Окно объявляется главным int nResponse = dlg. DoModal(); // Вывод окна if (nResponse == IDOK) {/* при нормальном завершении*/} else if (nResponse == IDCANCEL){/* если Cancel*/} return FALSE; }
Описание класса CEx1Dlg (Ex1Dlg. h) class CEx1Dlg : public CDialog { public: BOOL m_next; BOOL m_sta
Рис.8 Описание класса CEx1Dlg (Ex1Dlg. h) class CEx1Dlg : public CDialog { public: BOOL m_next; BOOL m_start; CEx1Dlg(CWnd* pParent = NULL); // Конструктор enum { IDD = IDD_EX1_DIALOG }; CEdit m_eInput; CEdit m_eOutput; CStatic m_sInput; CStatic m_sOutput; CButton m_bNext; CButton m_bCulc; CButton m_bExit;
Описание класса CEx1Dlg (Ex1Dlg. h)(2) protected: virtual void DoDataExchange(CDataExchange* pDX); H
Рис.9 Описание класса CEx1Dlg (Ex1Dlg. h)(2) protected: virtual void DoDataExchange(CDataExchange* pDX); HICON m_hIcon; virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnSetFocusInput(); afx_msg void OnChangeInput(); afx_msg void OnCulc(); afx_msg void OnNext(); DECLARE_MESSAGE_MAP() };
Описание класса CEx1Dlg (Ex1Dlg. cpp) CEx1Dlg::CEx1Dlg(CWnd* pParent /*=NULL*/) : CDialog(CEx1Dlg::I
Рис.10 Описание класса CEx1Dlg (Ex1Dlg. cpp) CEx1Dlg::CEx1Dlg(CWnd* pParent /*=NULL*/) : CDialog(CEx1Dlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_start=TRUE; m_next=FALSE; } void CEx1Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_eInput); DDX_Control(pDX, IDOK, m_bExit); DDX_Control(pDX, IDC_STATIC1, m_sInput); DDX_Control(pDX, IDC_STATIC2, m_sOutput); DDX_Control(pDX, IDC_EDIT2, m_eOutput); DDX_Control(pDX, IDC_BUTTON2, m_bNext); DDX_Control(pDX, IDC_BUTTON1, m_bCulc); }
Описание класса CEx1Dlg (Ex1Dlg. cpp)(2) BEGIN_MESSAGE_MAP(CEx1Dlg, CDialog) ON_WM_PAINT() ON_WM_QUE
Рис.11 Описание класса CEx1Dlg (Ex1Dlg. cpp)(2) BEGIN_MESSAGE_MAP(CEx1Dlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_EN_SETFOCUS(IDC_EDIT1, OnSetFocusInput) ON_EN_CHANGE( IDC_EDIT1, OnChangeInput) ON_BN_CLICKED( IDC_BUTTON1, OnCulc) ON_BN_CLICKED( IDC_BUTTON2, OnNext) END_MESSAGE_MAP() BOOL CEx1Dlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); m_eInput. SetFocus(); m_start=FALSE; // Начальная установка выполнена return FALSE; // Означает, что установлен фокус ввода }
Описание класса CEx1Dlg (Ex1Dlg. cpp)(3) void CEx1Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(thi
Рис.12 Описание класса CEx1Dlg (Ex1Dlg. cpp)(3) void CEx1Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc. GetSafeHdc(), 0); int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect. Width() - cxIcon + 1) / 2; int y = (rect. Height() - cyIcon + 1) / 2; dc. DrawIcon(x, y, m_hIcon); } else CDialog::OnPaint(); }
Описание класса CEx1Dlg (Ex1Dlg. cpp)(4) HCURSOR CEx1Dlg::OnQueryDragIcon() { return (HCURSOR) m_hIc
Рис.13 Описание класса CEx1Dlg (Ex1Dlg. cpp)(4) HCURSOR CEx1Dlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon;} void CEx1Dlg::OnSetFocusInput() { if (m_start || m_next)// Если начало или к следующему {m_eInput. SetWindowText(""); // Очистка поля ввода _eInput. SetReadOnly(FALSE); // Разрешение ввода m_eInput. ModifyStyle(0,WS_TABSTOP); /* Разрешение установки фокуса*/ m_sOutput. ModifyStyle(WS_VISIBLE,0); /*Сокрытие метки вывода */ m_eOutput. ModifyStyle(WS_VISIBLE,0); /* Сокрытие поля вывода*/ m_bCulc. ModifyStyle(0,WS_DISABLED); /*Дезактивация кнопки Выч. */ m_bNext. ModifyStyle(0,WS_DISABLED); /* Дезактивация кнопки След. */ InvalidateRect(NULL); /* Запрос на перерисовку окна */ SetDefID(IDOK); // Выполнение по Enter – на кнопку Выход } }
Описание класса CEx1Dlg (Ex1Dlg. cpp)(5) void CEx1Dlg::OnChangeInput() { char S[10]; m_eInput. GetWi
Рис.14 Описание класса CEx1Dlg (Ex1Dlg. cpp)(5) void CEx1Dlg::OnChangeInput() { char S[10]; m_eInput. GetWindowText(S,10); // Чтение строки if (S[0]!='{allslides}') { m_bCulc. ModifyStyle(WS_DISABLED,0); // Активация кнопки m_bCulc. InvalidateRect(NULL);// Запрос на перерисовку кнопки SetDefID(IDC_BUTTON1);// Выполнение по Enter – на кнопку Выч. } else {/* Дезактивация кнопки Выч. */ m_bCulc. ModifyStyle(0,WS_DISABLED); m_bCulc. InvalidateRect(NULL);// Запрос на перерисовку кнопки SetDefID(IDOK); // Выполнение по Enter – на кнопку Выход } }
Описание класса CEx1Dlg (Ex1Dlg. cpp)(6) void CEx1Dlg::OnCulc() { char S[10]; m_eInput. GetWindowTex
Рис.15 Описание класса CEx1Dlg (Ex1Dlg. cpp)(6) void CEx1Dlg::OnCulc() { char S[10]; m_eInput. GetWindowText(S,10); // Чтение строки int Num,Result; unsigned i; BOOL Code=TRUE; for (i=0;i<strlen(S);i++) // Все цифры? if (S[i]>'9'||S[i]<'0') Code=FALSE; if (Code) { Num=atoi(S); Result=Num*Num; itoa(Result,S,10); m_eOutput. SetWindowText(S); // Вывод результата m_eInput. SetReadOnly(TRUE); // Запрет ввода m_eInput. ModifyStyle(WS_TABSTOP,0); // Запрет Tab stop m_sOutput. ModifyStyle(0,WS_VISIBLE); /* Установка видимости метки */
Описание класса CEx1Dlg (Ex1Dlg. cpp)(7) m_eOutput. ModifyStyle(0,WS_VISIBLE); /* Установка видимост
Рис.16 Описание класса CEx1Dlg (Ex1Dlg. cpp)(7) m_eOutput. ModifyStyle(0,WS_VISIBLE); /* Установка видимости поля */ m_bCulc. ModifyStyle(0,WS_DISABLED); /* Дезактивация кнопки Выч. */ m_bNext. ModifyStyle(WS_DISABLED,0); // Активация След. InvalidateRect(NULL); // Запрос на перерисовку окна диалога SetDefID(IDC_BUTTON2); // По Enter – на кнопку След. GotoDlgCtrl(&m_bNext); // Фокус на кнопку След. } else { CDialog1 dlg1; // Объект класса int nRes1 = dlg1. DoModal(); // Вывод окна m_eInput. SetFocus(); // Фокус на ввод } }
Описание класса CEx1Dlg (Ex1Dlg. cpp)(8) void CEx1Dlg::OnNext() { m_next=TRUE; // Переход к следующе
Рис.17 Описание класса CEx1Dlg (Ex1Dlg. cpp)(8) void CEx1Dlg::OnNext() { m_next=TRUE; // Переход к следующему m_eInput. SetFocus(); // Фокус ввода на редактор ввода m_next=FALSE; // Переход к следующему выполнен }


Скачать презентацию