Информатика_VCL (Лекции №1 С++)

2013-09-07СтудИзба

Описание презентации

Файл "Информатика_VCL" внутри архива находится в папке "Лекции". Презентация из архива "Лекции №1 С++", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.

Просмотр презентации онлайн

Текст из слайда

8 Библиотека Microsoft Foundation Classes
(MFC)
Иерархия классов
CObject
CCmdTarget
CWnd
CEdit
CButton
CStatic
CWinChread
CDialog
CWinApp
1

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

Приложение «Возведение числа в
квадрат»(2)
CWinApp
CDialog
CEx1App
CEx1Dlg
CEx1App()
InitInstance()
m_hIcon
m_next
m_start
CEx1App()
DoDataExchange()
OnQueryDragIcon()
OnPaint()
OnInitDialog()
OnSetFocusInput()
OnChangeInput()
OnCulc()
OnNext()
2
3
2
CEdit
CButton
CStatic
CDialog1
DoDataExchange()
3

Описание класса приложения (Файл Ex1.h):
#include "resource.h " // файл уникальных номеров ресурсов
class CEx1App : public CWinApp
{ public:
CEx1App(); // конструктор
virtual BOOL InitInstance();// инициализация окна
DECLARE_MESSAGE_MAP() // макрос таблицы сообщений
};
4

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

Метод инициализации (Файл 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;
}
6

Описание класса 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;
7

Описание класса 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()
};
8

Описание класса 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);
}
9

Описание класса 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;
// Означает, что установлен фокус ввода
10
}

Описание класса 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();
}
11

Описание класса 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 – на кнопку Выход
}
12
}

Описание класса CEx1Dlg (Ex1Dlg.cpp)(5)
void CEx1Dlg::OnChangeInput()
{ char S[10];
m_eInput.GetWindowText(S,10); // Чтение строки
if (S[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 – на кнопку Выход
}
13
}

Описание класса 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;iif (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); /* Установка
видимости метки */
14

Описание класса 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();
// Фокус на ввод
}
}
15

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

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее