Разделы презентаций


Библиотека Microsoft Foundation Classes (MFC)

Содержание

Иерархия классовCObjectCCmdTargetCWndCEditCButtonCStaticCDialogCWinChreadCWinApp

Слайды и текст этой презентации

Слайд 1Глава 8. Библиотека Microsoft Foundation Classes (MFC)
МГТУ им. Н.Э. Баумана
Факультет

Информатика и системы управления
Кафедра Компьютерные системы и сети
Лектор: д.т.н., проф.


Иванова Галина Сергеевна
Глава 8.  Библиотека Microsoft Foundation Classes (MFC)МГТУ им. Н.Э. БауманаФакультет Информатика и системы управленияКафедра Компьютерные системы

Слайд 2Иерархия классов
CObject
CCmdTarget
CWnd
CEdit
CButton
CStatic
CDialog
CWinChread
CWinApp

Иерархия классовCObjectCCmdTargetCWndCEditCButtonCStaticCDialogCWinChreadCWinApp

Слайд 3Приложение «Возведение числа в квадрат»
С1 – WM_INITDIALOG главного окна;
С2 –

EN_CHANGE при вводе числа;
С3 – BN_CLICKED кнопки Выполнить;
С4 – BN_CLICKED

кнопки Следующее;
С5 – BN_CLICKED для кнопки Выход;
С6 – BN_CLICKED для кнопки OK;
С7 – EN_CHANGE при удалении.
Приложение «Возведение числа в квадрат»С1 – WM_INITDIALOG главного окна;С2 – EN_CHANGE при вводе числа;С3 – BN_CLICKED кнопки

Слайд 4Приложение «Возведение числа в квадрат»(2)
CWinApp
CDialog
CEx1App
CEx1Dlg

CEx1App()
InitInstance()
m_hIcon
m_next
m_start
CEx1App()
DoDataExchange()
OnQueryDragIcon()
OnPaint()
OnInitDialog()
OnSetFocusInput()
OnChangeInput()
OnCulc()
OnNext()
CEdit
CButton
CStatic
2
3
2
CDialog1

DoDataExchange()

Приложение «Возведение числа в квадрат»(2)CWinAppCDialogCEx1AppCEx1DlgCEx1App()InitInstance()m_hIcon m_next m_startCEx1App()DoDataExchange()OnQueryDragIcon()OnPaint() OnInitDialog()OnSetFocusInput()OnChangeInput()OnCulc()OnNext()CEditCButtonCStatic232CDialog1DoDataExchange()

Слайд 5Описание класса приложения (Файл Ex1.h):

#include "resource.h " // файл уникальных

номеров ресурсов

class CEx1App : public CWinApp
{ public:
CEx1App(); // конструктор

virtual BOOL InitInstance();// инициализация окна
DECLARE_MESSAGE_MAP() // макрос таблицы сообщений
};
Описание класса приложения (Файл Ex1.h):#include

Слайд 6Таблица, конструктор, объект(Файл Ex1.сpp)
BEGIN_MESSAGE_MAP(CEx1App, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

CEx1App::CEx1App()
{ }

CEx1App theApp; // экземпляр приложения

Таблица, конструктор, объект(Файл Ex1.сpp)BEGIN_MESSAGE_MAP(CEx1App, CWinApp)		ON_COMMAND(ID_HELP, CWinApp::OnHelp)END_MESSAGE_MAP()CEx1App::CEx1App(){	}CEx1App theApp; // экземпляр приложения

Слайд 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;
}
Метод инициализации (Файл Ex1.сpp)BOOL CEx1App::InitInstance()   // Метод инициализации{ #ifdef _AFXDLL

Слайд 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)class CEx1Dlg : public CDialog{ public:			BOOL m_next;		BOOL m_start;		CEx1Dlg(CWnd* pParent = NULL); // Конструктор		enum {

Слайд 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.h)(2)protected: 	  virtual void DoDataExchange(CDataExchange* pDX);   HICON m_hIcon;		virtual BOOL OnInitDialog();		afx_msg void

Слайд 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)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,

Слайд 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)(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);

Слайд 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)(3)void CEx1Dlg::OnPaint() { 	if (IsIconic())  	{	CPaintDC dc(this); // device context for painting		SendMessage(WM_ICONERASEBKGND, 					(WPARAM)

Слайд 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)(4)HCURSOR CEx1Dlg::OnQueryDragIcon(){	return (HCURSOR) m_hIcon;}void CEx1Dlg::OnSetFocusInput() { if (m_start || m_next)// Если начало или к

Слайд 14Описание класса CEx1Dlg (Ex1Dlg.cpp)(5)
void CEx1Dlg::OnChangeInput()
{ char S[10];
m_eInput.GetWindowText(S,10); //

Чтение строки
if (S[0]!='\0')
{
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)(5)void CEx1Dlg::OnChangeInput() {	char S[10];  m_eInput.GetWindowText(S,10); // Чтение строки  if (S[0]!='\0')

Слайд 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

// Все цифры?
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)(6)void CEx1Dlg::OnCulc() {	char S[10]; 	m_eInput.GetWindowText(S,10); // Чтение строки 	int Num,Result;   	unsigned i;

Слайд 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)(7)	m_eOutput.ModifyStyle(0,WS_VISIBLE); /* Установка 								видимости поля */	m_bCulc.ModifyStyle(0,WS_DISABLED);  /* Дезактивация 							кнопки Выч.*/	m_bNext.ModifyStyle(WS_DISABLED,0); // Активация След.	InvalidateRect(NULL);

Слайд 17Описание класса CEx1Dlg (Ex1Dlg.cpp)(8)
void CEx1Dlg::OnNext()
{ m_next=TRUE;

// Переход к следующему
m_eInput.SetFocus(); // Фокус ввода на редактор ввода
m_next=FALSE;

// Переход к следующему выполнен
}
Описание класса CEx1Dlg (Ex1Dlg.cpp)(8)void CEx1Dlg::OnNext() {	m_next=TRUE;     // Переход к следующему	m_eInput.SetFocus(); // Фокус ввода

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика