- •Карагандинский государственный технический университет
- •Исходные данные
- •2. Порядок выполнения работы
- •3. Методические указания
- •3.1. Разработка проекта.
- •3.2. Создание заготовки для консольного приложения.
- •3.3. Кодирование проекта
- •5)Описание функций, созданных программистом
- •3.4. Отладка и доказательство правильности работы программы
- •3.5. Типичные ошибки программирования
- •3.6. Хороший стиль программирования
- •4.Содержание отчета по выполнению лабораторных работ
- •5. Задания на самостоятельную работу при подготовке к лабораторным занятиям
- •6. Перечень используемой литературы
- •Лабораторная работа №2
- •1.Задание на выполнение лабораторной работы
- •2. Порядок выполнения работы
- •3 Методические указания
- •3.2. Создание заготовки для консольного приложения.
- •3.3. Кодирование проекта
- •6)Описание функций, созданных программистом
- •3.4. Отладка и доказательство правильности работы программы
- •3.5. Типичные ошибки программирования и хороший стиль программирования
- •4.Содержание отчета по выполнению лабораторных работ
- •5. Задания на самостоятельную работу при подготовке к лабораторным занятиям
- •6. Перечень используемой литературы
- •Лабораторная работа №3 Разработка диалогового Windows-приложения для проектирования цилиндрических деталей типа стакана
- •1.Задание на выполнение лабораторной работы
- •2.Порядок выполнения работы
- •3.2. Создание шаблона проекта с помощью мастера AppWizard.
- •3.3. Визуальное проектирование диалоговой панели созданного проекта
- •3.4. Установка и настройка элементов управления
- •3.5. Установка статических текстов
- •3.6. Установка и настройка окон редактирования
- •3.7. Установка и настройка элемента управления Picture(рисунок)
- •3.8. Установка и настройка элементов управления Botton(кнопка)
- •3.9. Кодирование проекта
- •3.9.1.Доработка заголовочного файла CapStDlg.H
- •3.9.2. Доработка исходного файла CupStDlg.Cpp.
- •3.10. Выполнение проекта
- •4.Содержание отчета по выполнению лабораторной работы
- •5.Задания на самостоятельную работу при подготовке к лабораторным занятиям
- •6. Перечень используемой литературы
- •Лабораторная работа №4 Разработка однооконного Windows-приложения для вывода графической информации.
- •1.Задание на выполнение лабораторной работы
- •2.Порядок выполнения работы
- •3. Методические указания
- •1.1 Объект cPen - карандаш
- •3. Пример простого графического вывода :
- •3.3 Выполнение проекта
- •4.Содержание отчета по выполнению лабораторной работы
- •5.Задания на самостоятельную работу при подготовке к лабораторным занятиям
- •6. Перечень используемой литературы
3.9. Кодирование проекта
Остов заголовочных и исполняемых файлов приложения сделаны AppWizard. Нам остается вписать в созданные им файлы коды, обеспечивающие ввод исходных данных, вычисления и вывод результатов в соответствующие окна редактирования на диалоговой панели. Другими словами, нам нужно доработать упомянутые файлы и вдохнуть в них функциональность нашего приложения.
3.9.1.Доработка заголовочного файла CapStDlg.H
Для этого в области ProjectWorkspaseна вкладкеFileVievпоследовательно раскроем пунктCupStfiles, папкуHeaderFilesи дважды щелкнем на пунктеCapStDlg.h. При этом в окне редактирования кода открывается код заголовочного файлаCapStDlg.h.
В объявлении класса classCCupStDlg:publicCdialogнеобходимо объявить функции для вычисления значений всех искомых и промежуточных переменных:A1,A2,A3,A,V,m,D, а также исходных переменныхd,H,s,Rn,pi. Ниже приведен фрагмент кода заголовочного файлаCapStDlg.h, созданногоAppWizardс указанием места вставки упомянутых выше объявлений:
// CupStDlg.h : header file
//
#if !defined(AFX_CUPSTDLG_H__2BF3ADE8_545E_11DA_BE20_00115B638F0C__INCLUDED_)
#define AFX_CUPSTDLG_H__2BF3ADE8_545E_11DA_BE20_00115B638F0C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CCupStDlg dialog
class CCupStDlg : public CDialog
{
// Construction
public:
CCupStDlg(CWnd* pParent = NULL); // standard constructor
//Здесь нужно вставить определения функций для вычисления искомых переменных //и определения исходных переменных d,H,s,Rn,pi
// Например:
doubled,H,s,Rn,rho,pi;// Определения исходных переменных
doubleArea(void);// Определение функции для вычисления площади поверхности
…………………….;
……………………..;
…………………….;
…………………….;
…………………….;
doubleDBlank(void);// Определение функции для вычисления диаметра заготовки
// Dialog Data
//{{AFX_DATA(CCupStDlg)
enum { IDD = IDD_CUPST_DIALOG };
double m_Edit_d;
double m_Edit_h;
double m_Edit_Rn;
double m_Edit_s;
double m_Edit_rho;
double m_Edit_A;
double m_Edit_m;
double m_Edit_diam;
double m_Edit_V;
//}}AFX_DATA
……………………………………..
//Оставшуюся и не приведенную здесь часть кода оставляем без изменения
3.9.2. Доработка исходного файла CupStDlg.Cpp.
В исходном файле CupStDlg.cppпосле тела любой функции, созданнойAppWizard, необходимо вставить определения всех семи функций объявленных в заголовочном файле. Для этого двойным щелчком по имени файлаCupStDlg.cpp, размещенного в открытой папкеSourceFilesокна проекта, открываем текст исходного кода, нужный фрагмент которого приведен ниже и будет использован для доработки-вставки упомянутых выше определений функций приложения:
// CupStDlg.cpp : implementation file
//
#include "stdafx.h"
#include "CupSt.h"
#include "CupStDlg.h"
#include <math.h> // вставлено разработчиком проекта
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
//Здесь нужно вставить
//Функции-члены класса, обеспечивающие результаты расчета параметров
// проектируемого стакана. К примеру, начнем с функции вычисления площади //поверхности дна стакана Area1(void)
double CCupStDlg::Area1(void)
{
doubleA1;
A1=pi*(d-2*Rn)*(d-2*Rn)/4; //Переменная А1 возвращает площадь дна стакана
returnA1;
}
…………………………………..
……………………………………
……………………………………
……………………………………
……………………………………
doubleCCupStDlg::DBlank(void) // Функция вычисляет диаметр заготовки
{
double A,D;
A=Area();
D=sqrt(4*A/pi);// ПеременнаяDвозвращает вычисленное значение диаметра //заготовки
return D;
}
// Конец функций-членов, созданных разработчиком проекта
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCupStDlg dialog
CCupStDlg::CCupStDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCupStDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCupStDlg)
m_Edit_d = 0.0;
m_Edit_h = 0.0;
m_Edit_Rn = 0.0;
m_Edit_s = 0.0;
m_Edit_rho = 0.0;
m_Edit_A = 0.0;
m_Edit_m = 0.0;
m_Edit_diam = 0.0;
m_Edit_V = 0.0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
//Оставшуюся и не приведенную здесь часть кода оставляем без изменения
3.9.3. Связывание кнопки OK с кодом для решения и вывода результатов задачи
В меню ViewвыберемClassWizard, а в панелиMFCClassWizardна вкладке Message Maps выбираем:
Class name: CСupStDlg
Object Ids: IDOK
Messages: BN_CLICKED
Убедимся, что в панели MFC ClassWizard (Рис.13) в окне Member functions имеется функция OnOK и щелкнем по кнопке Edit Code. В ответVC++ откроет файл СupStDlg.cppс приведенным ниже шаблоном функцииOnOK. Внутри шаблона после строки //TODO:Addextravalidationhereнапишем следующий код:
void CCupStDlg::OnOK()
{
// TODO: Add extra validation here
pi=3.141593;
d=m_Edit_d; //присваивает переменойdзначение из окнаm_Edit_d
……………..;
…………….;
…………….;
rho=m_Edit_rho;//присваивает переменойrhoзначение из окнаm_Edit_rho
m_Edit_A=Area();//передает значение функции переменной m_Edit_A
……………………;
…………………….;
m_Edit_diam=DBlank();//передает значение функции переменнойm_Edit_A
UpdateData(FALSE); // функция класса CWnd::UpdateData(False),
// которая передаст значения из окон редактирования диалоговой панели в
//исходные переменные программы и от результирующих функций в окна
//редактирования для отображения значений искомых переменных A, V, m, D.
// CDialog::OnOK();
}
Мы завершили вместе с AppWizardразработку кода для ввода исходных данных, выполнения расчета и вывода результатов расчета на диалоговую панель.
Сохраним результаты нашей работы включив команду File\SaveAll, а затемSaveWorkspaсe.