Программа и методика испытаний
Чтобы проверить работоспособность программы, сравним графики, построенные в нашей программе, и графики, построенные в Maple.
Рис. 4. График функции при , построенный в программном пакете Maple
Код для построенния:
;
;
Результат нашей программы со значениями представленн на Рис. 5:
Подобрав масштаб изображения, видно, что графики отображены одинаково как в программном пакете Maple, так и в нашей программе.
Рис. 6. График функции при , построенный в программном пакете Maple
Рис. 7. Результат нашей программы со значениями
Рис. 8. График функции при ,
построенный в программном пакете Maple
Рис. 9. Результат нашей программы со значениями
Рис. 10. График функции при , построенный в программном пакете Maple
Рис. 11. Результат нашей программы со значениями
Источники, использованные в разработке
1. Марапулец Ю.В. Системное программирование в WIN API: учебное пособие. – Петропавловск-Камчатский: КамГУ им. Витуса Беринга, 2011. - 233 с.
2. Соломон Д., Русинович М. Внутреннее устройство Windows 2005. С_Пб.: Питер, 2004 г. – 746 с.
3. С.Холзнер. Visual C++: Учебный курс. С.-Пб.: Питер, 2004 г.
4. Б. Страуструп. Язык программирования C++.
5. А.Черносвитов. . Visual C++ и MFC. С.-Пб.: Питер. 2005 г.
6. А.В. Мешков, Ю.В. Тихомиров. Visual C++ и MFC (том II) – Москва, СПб.: BHV – Санкт-Петербург, 1997 – 464с.
Заключение
В результате работы мы получили программу для отображения графика функции .
Программа позволяет рисовать график функции при различных параметрах a, b, c, позволяет изменять цвет графика, толщину линии результата. В пргорамме присутсвуют дополнительные опции в виде: значений по осям (0х, 0у), увеличение/уменьшение масштаба.
В результате выполнения курсового проекта были получены навыки разработки программных продуктов в среде разработки Microsoft Visual C++.
Приложения
Приложение А – Код, добавленный в заготовку программы
GraphicView.h
// GraphicView.h : интерфейс класса CGraphicView
//
#pragma once
class CGraphicView : public CView
{
protected: // создать только из сериализации
CGraphicView();
DECLARE_DYNCREATE(CGraphicView)
CPen OldPen, AxesPen, ClrPen;
bool bBlackPen, bGreyPen, bRedPen, bGreenPen, bBluePen, bYellowPen, bCyanPen, bMagentaPen;
int red,green,blue; //переменные для настройки цвета линий
bool bZnach, bPoints;
void DoColorFalse(); //сброс флагов цвета линии
void Schet(); //вычисление значений функции и располжения точек
void Shagi(); //вычисление шага для вычисления и количества шагов
void Draw(); //прорисовка графика
void DrawAxes(); //прорисовка осей
void ClearWin(); //очистка окна
void PenReset(); //перенастройка цвета линии
void OnChangeRect(); //действия при изменении размера окна
int d; //толщина линии
int p_step; //шаг в пикселях
double step; //шаг
int countOfStep; //количество шагов
double d_a,d_b,d_c; //параметры a,b,c
double x_left,x_right; //граничные значения х
CRect r; //переменная, хранящая размер окна
int H,W; //для перерисовки при изменении размера окна
CPoint points [1000]; //точки для построения
CPoint zero; //начало координат
CFont Font; //шрифт
// Атрибуты
public:
CGraphicDoc* GetDocument() const;
// Операции
public:
// Переопределение
public:
virtual void OnDraw(CDC* pDC); // переопределено для отрисовки этого представления
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Реализация
public:
virtual ~CGraphicView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Созданные функции схемы сообщений
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnFileNew();
afx_msg void OnStart();
afx_msg void OnUpdateBlackline(CCmdUI *pCmdUI);
afx_msg void OnBlueline();
afx_msg void OnBlackline();
afx_msg void OnUpdateBlueline(CCmdUI *pCmdUI);
afx_msg void OnCyanline();
afx_msg void OnUpdateCyanline(CCmdUI *pCmdUI);
afx_msg void OnGreenline();
afx_msg void OnUpdateGreenline(CCmdUI *pCmdUI);
afx_msg void OnGreyline();
afx_msg void OnUpdateGreyline(CCmdUI *pCmdUI);
afx_msg void OnMagentaline();
afx_msg void OnUpdateMagentaline(CCmdUI *pCmdUI);
afx_msg void OnRedline();
afx_msg void OnUpdateRedline(CCmdUI *pCmdUI);
afx_msg void OnYellowline();
afx_msg void OnUpdateYellowline(CCmdUI *pCmdUI);
afx_msg void OnDecline();
afx_msg void OnIncline();
afx_msg void OnChangepar();
afx_msg void OnDecrmssht();
afx_msg void OnIncrmssht();
afx_msg void OnNumbersonaxes();
afx_msg void OnUpdateNumbersonaxes(CCmdUI *pCmdUI);
afx_msg void OnMoving(UINT fwSide, LPRECT pRect);
};
GraphicView.cpp
// GraphicView.cpp : реализация класса CGraphicView
//
#include "stdafx.h"
// SHARED_HANDLERS можно определить в обработчиках фильтров просмотра реализации проекта ATL, эскизов
// и поиска; позволяет совместно использовать код документа в данным проекте.
#ifndef SHARED_HANDLERS
#include "Graphic.h"
#endif
#include "GraphicDoc.h"
#include "GraphicView.h"
#include "Dlg.h"
#include "DlgFind.h"
#include <math.h>
#include <stdlib.h>
#include <fstream>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CGraphicView
IMPLEMENT_DYNCREATE(CGraphicView, CView)
BEGIN_MESSAGE_MAP(CGraphicView, CView)
// Стандартные команды печати
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_COMMAND(ID_Start, &CGraphicView::OnStart)
ON_UPDATE_COMMAND_UI(ID_BlackLine, &CGraphicView::OnUpdateBlackline)
ON_COMMAND(ID_BlueLine, &CGraphicView::OnBlueline)
ON_COMMAND(ID_BlackLine, &CGraphicView::OnBlackline)
ON_UPDATE_COMMAND_UI(ID_BlueLine, &CGraphicView::OnUpdateBlueline)
ON_COMMAND(ID_CyanLine, &CGraphicView::OnCyanline)
ON_UPDATE_COMMAND_UI(ID_CyanLine, &CGraphicView::OnUpdateCyanline)
ON_COMMAND(ID_GreenLine, &CGraphicView::OnGreenline)
ON_UPDATE_COMMAND_UI(ID_GreenLine, &CGraphicView::OnUpdateGreenline)
ON_COMMAND(ID_GreyLine, &CGraphicView::OnGreyline)
ON_UPDATE_COMMAND_UI(ID_GreyLine, &CGraphicView::OnUpdateGreyline)
ON_COMMAND(ID_MagentaLine, &CGraphicView::OnMagentaline)
ON_UPDATE_COMMAND_UI(ID_MagentaLine, &CGraphicView::OnUpdateMagentaline)
ON_COMMAND(ID_RedLine, &CGraphicView::OnRedline)
ON_UPDATE_COMMAND_UI(ID_RedLine, &CGraphicView::OnUpdateRedline)
ON_COMMAND(ID_YellowLine, &CGraphicView::OnYellowline)
ON_UPDATE_COMMAND_UI(ID_YellowLine, &CGraphicView::OnUpdateYellowline)
ON_COMMAND(ID_DecLine, &CGraphicView::OnDecline)
ON_COMMAND(ID_IncLine, &CGraphicView::OnIncline)
ON_COMMAND(ID_ChangePar, &CGraphicView::OnChangepar)
ON_COMMAND(ID_DecrMssht, &CGraphicView::OnDecrmssht)
ON_COMMAND(ID_IncrMssht, &CGraphicView::OnIncrmssht)
ON_COMMAND(ID_NumbersOnAxes, &CGraphicView::OnNumbersonaxes)
ON_UPDATE_COMMAND_UI(ID_NumbersOnAxes, &CGraphicView::OnUpdateNumbersonaxes)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()
// создание/уничтожение CGraphicView
CGraphicView::CGraphicView()
{
DoColorFalse();
d=1;
red=0; green=0; blue=0;
bZnach=false;
bPoints=false;
bBlackPen=true;
AxesPen.CreatePen(PS_SOLID,2,RGB(0,0,0));
ClrPen.CreatePen(PS_SOLID,d,RGB(red,green,blue));
OldPen.CreateStockObject(BLACK_PEN);
Font.CreatePointFont(70,"TimesNewRoman");
}
void CGraphicView::DoColorFalse()
{
bBlackPen=false;
bGreyPen=false;
bRedPen=false;
bGreenPen=false;
bBluePen=false;
bYellowPen=false;
bCyanPen=false;
bMagentaPen=false;
}
void CGraphicView::PenReset()
{
ClrPen.DeleteObject();
ClrPen.CreatePen(PS_SOLID,d,RGB(red,green,blue));
}
CGraphicView::~CGraphicView()
{
}
BOOL CGraphicView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: изменить класс Window или стили посредством изменения
// CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
// рисование CGraphicView
void CGraphicView::OnDraw(CDC* pDC)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
GetClientRect(&r);
OnChangeRect();
}
// печать CGraphicView
BOOL CGraphicView::OnPreparePrinting(CPrintInfo* pInfo)
{
// подготовка по умолчанию
return DoPreparePrinting(pInfo);
}
void CGraphicView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: добавьте дополнительную инициализацию перед печатью
}
void CGraphicView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: добавьте очистку после печати
}
// диагностика CGraphicView
#ifdef _DEBUG
void CGraphicView::AssertValid() const
{
CView::AssertValid();
}
void CGraphicView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CGraphicDoc* CGraphicView::GetDocument() const // встроена неотлаженная версия
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGraphicDoc)));
return (CGraphicDoc*)m_pDocument;
}
#endif //_DEBUG
// обработчики сообщений CGraphicView
// действия при нажатии на пункт меню Файл -> Запуск
void CGraphicView::OnStart()
{
CGraphicView();
CDlg dlg;
int result=dlg.DoModal();
if (result==IDOK)
{
d_a=dlg.a;
d_b=dlg.b;
d_c=dlg.c;
x_right=15;
x_left=-15;
try
{
if (d_a==0 || d_b==0)
throw "Введены неверные параметры";
else
{
GetClientRect(&r);
W=r.Width();
H=r.Height();
zero.x=r.Width()/2;
zero.y=r.Height()/2;
PenReset();
Schet();
bPoints=true;
Draw();
}
}
catch (const char *p)
{
MessageBox(p,"Ошибка",NULL|MB_ICONWARNING);
OnStart();
}
}
}
// Вычисления
void CGraphicView::Schet()
{
Shagi();
double d_x, d_y;
d_x=0.0001*d_b/abs(d_b)-d_c/d_b;
for (int i=0; i<1000;i++)
{
d_y=d_a*log(d_b*d_x+d_c);
points[i].y=d_y*p_step/step;
if (i==0 && (zero.y-points[i].y)>r.Height())
{
d_y=-d_y+(points[i].y-r.Height())*step/p_step;
points[i].y=r.Height();
d_x=d_b/abs(d_b)*abs(exp(d_y/d_a))-d_c/d_b;
points[i].x=zero.x+d_x*p_step/step;
}
else if (i==0 && (zero.y-points[i].y)<0)
{
d_y=d_y-(points[i].y-zero.y)*step/p_step;
points[i].y=0;
d_x=d_b/abs(d_b)*abs(exp(d_y/d_a))-d_c/d_b;
points[i].x=zero.x+d_x*p_step/step;
}
else
{
points[i].y=zero.y-points[i].y;
points[i].x=points[i-1].x+p_step;
}
d_x=d_x+step;
}
return;
}
void CGraphicView::Shagi()
{
p_step=3*d_b/abs(d_b);
step=(abs(x_right)+abs(x_left))*p_step/r.Width();
if (d_c==0)
countOfStep=x_right/abs(step);
else if (abs(d_c/d_b)<x_right)
countOfStep=(x_right+d_c/abs(d_c)*d_c/abs(d_b))/abs(step);
else
countOfStep=r.Width()/abs(p_step);
}
//Прорисовка
void CGraphicView::Draw()
{
PenReset();
ClearWin();
DrawAxes();
CClientDC *pDC=new CClientDC(this);
pDC->SelectObject(ClrPen);
int j=0;
if (points[0].x<0)
while (points[j].x<0)
j++;
else if (points[0].x>r.Width())
while (points[j].x>r.Width())
j++;
if (d_b>0)
for (int i=j+1; i<=countOfStep+j; i++)
{
pDC->MoveTo(points[i-1].x,points[i-1].y);
pDC->LineTo(points[i].x,points[i].y);
}
else
for (int i=countOfStep+j-1; i>=j; i--)
{
pDC->MoveTo(points[i+1].x,points[i+1].y);
pDC->LineTo(points[i].x,points[i].y);
}
pDC->SelectObject(OldPen);
delete pDC;
return;
}
void CGraphicView::DrawAxes()
{
CClientDC *pDC=new CClientDC(this);
pDC->SelectObject(AxesPen);
pDC->MoveTo(0,zero.y);
pDC->LineTo(r.Width(),zero.y);
pDC->MoveTo(r.Width()-8,zero.y-4);
pDC->LineTo(r.Width(),zero.y);
pDC->MoveTo(r.Width()-8,zero.y+4);
pDC->LineTo(r.Width(),zero.y);
pDC->MoveTo(zero.x,0);
pDC->LineTo(zero.x,r.Height());
pDC->MoveTo(zero.x-4,8);
pDC->LineTo(zero.x,0);
pDC->MoveTo(zero.x+4,8);
pDC->LineTo(zero.x,0);
if (bZnach && bPoints)
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SelectObject(&Font);
int i_zX=zero.x;
int i_zY=zero.y;
double d_zX=0;
double d_zY=0;
float d_Sh; //шаг
CString s_zX; //переменные для перевода числа в строку, эти строки выводятся на экран
CString s_zY;
d_Sh=40*abs(step/p_step);
while (i_zX<r.Width()-40)
{
s_zX.Format("%.2f",d_zX);
pDC->MoveTo(i_zX,zero.y-4); //чёрточка на оси
pDC->LineTo(i_zX,zero.y+4);
pDC->TextOutA(i_zX+3,zero.y+5,s_zX); //вывод значения в виде текста
d_zX=d_zX+d_Sh;
i_zX=i_zX+40;
}
pDC->TextOutA(r.Width()-6,zero.y+5,"X");
while (i_zY<r.Height()-40)
{
d_zY=d_zY-d_Sh;
i_zY=i_zY+40;
s_zY.Format("%.2f",d_zY);
pDC->MoveTo(zero.x-4,i_zY);
pDC->LineTo(zero.x+4,i_zY);
pDC->TextOutA(zero.x-23,i_zY,s_zY);
}
i_zX=zero.x;
i_zY=zero.y;
d_zX=0;
d_zY=0;
while (i_zX>40)
{
d_zX=d_zX-d_Sh;
i_zX=i_zX-40;
s_zX.Format("%.2f",d_zX);
pDC->MoveTo(i_zX,zero.y-4);
pDC->LineTo(i_zX,zero.y+4);
pDC->TextOutA(i_zX+1,zero.y+5,s_zX);
}
while (i_zY>40)
{
d_zY=d_zY+d_Sh;
i_zY=i_zY-40;
s_zY.Format("%.2f",d_zY);
pDC->MoveTo(zero.x-4,i_zY);
pDC->LineTo(zero.x+4,i_zY);
pDC->TextOutA(zero.x-20,i_zY,s_zY);
}
pDC->TextOutA(zero.x+4,4,"Y");
}
delete pDC;
}
void CGraphicView::ClearWin()
{
CClientDC *pDC=new CClientDC(this);
pDC->FillSolidRect(0,0,r.Width(),r.Height(),RGB(255,255,255));
delete pDC;
}
// действия при нажатии на пункт меню Сервис -> Изменить параметры
void CGraphicView::OnChangepar()
{
if (bPoints)
{
CDlg dlg;
UpdateData(false);
int result=dlg.DoModal();
if (result==IDOK)
{
d_a=dlg.a;
d_b=dlg.b;
d_c=dlg.c;
x_right=15;
x_left=-15;
zero.x=r.Width()/2;
zero.y=r.Height()/2;
try
{
if (d_a==0 || d_b==0)
throw "Введены неверные параметры";
else
{
Schet();
Draw();
}
}
catch (const char *p)
{
MessageBox(p,"Ошибка",NULL|MB_ICONWARNING);
OnStart();
}
}
}
}
// при изменении размеров окна пересчитать значения и перерисовать
void CGraphicView::OnChangeRect()
{
if (bPoints && (W!=r.Width() || H!=r.Height()))
{
zero.x=zero.x*r.Width()/W;
zero.y=zero.y*r.Height()/H;
W=r.Width();
H=r.Height();
Schet();
Draw();
}
}
//Действия при выборе цветов
//изменения в интерфейсе
void CGraphicView::OnUpdateBlackline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bBlackPen);
}
void CGraphicView::OnUpdateGreyline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bGreyPen);
}
void CGraphicView::OnUpdateRedline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bRedPen);
}
void CGraphicView::OnUpdateGreenline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bGreenPen);
}
void CGraphicView::OnUpdateBlueline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bBluePen);
}
void CGraphicView::OnUpdateYellowline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bYellowPen);
}
void CGraphicView::OnUpdateCyanline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bCyanPen);
}
void CGraphicView::OnUpdateMagentaline(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bMagentaPen);
}
//выполняемые команды
void CGraphicView::OnBlackline()
{
DoColorFalse();
bBlackPen=true;
red=0; green=0; blue=0;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnGreyline()
{
DoColorFalse();
bGreyPen=true;
red=155; green=155; blue=155;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnRedline()
{
DoColorFalse();
bRedPen=true;
red=255; green=0; blue=0;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnGreenline()
{
DoColorFalse();
bGreenPen=true;
red=0; green=255; blue=0;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnBlueline()
{
DoColorFalse();
bBluePen=true;
red=0; green=0; blue=255;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnYellowline()
{
DoColorFalse();
bYellowPen=true;
red=255; green=255; blue=0;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnCyanline()
{
DoColorFalse();
bCyanPen=true;
red=0; green=255; blue=255;
PenReset();
if (bPoints)
Draw();
}
void CGraphicView::OnMagentaline()
{
DoColorFalse();
bMagentaPen=true;
red=255; green=0; blue=255;
PenReset();
if (bPoints)
Draw();
}
// действия при выборе пунктов меню Сервис -> Уменьшить толщину линии и Сервис -> Увеличить толщину линии соответственно
void CGraphicView::OnDecline()
{ if (d>1)
{
d=d--;
PenReset();
if (bPoints)
Draw();
}}
void CGraphicView::OnIncline()
{ if (d<20)
{
d=d++;
PenReset();
if (bPoints)
Draw();
}}
//Изменение масштаба
void CGraphicView::OnDecrmssht()
{
if (abs(x_right-x_left)<100 && bPoints)
{
x_right++;
x_left--;
Schet();
Draw();
}
}
void CGraphicView::OnIncrmssht()
{
int i,k;
k=0;
if (bPoints)
{
if (((x_right-x_left)>2 && (x_right/x_left<0 || x_right==0 || x_left==0)) || (abs(abs(x_right)-abs(x_left))>2 && x_right/x_left>0))
{
x_right--;
x_left++;
Schet();
Draw();
}
}
}
// действия при выборе пункта меню Сервис -> Подписи по осям
void CGraphicView::OnNumbersonaxes()
{
bZnach=!bZnach;
if (bPoints)
Draw();
}
void CGraphicView::OnUpdateNumbersonaxes(CCmdUI *pCmdUI)
{ pCmdUI->SetCheck(bZnach); }
GraphicDoc.h
// Переопределение
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
#ifdef SHARED_HANDLERS
virtual void InitializeSearchContent();
virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);
#endif // SHARED_HANDLERS
// Реализация
public:
virtual ~CGraphicDoc();
CMetaFileDC *pMetaFileDC;
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Созданные функции схемы сообщений
protected:
DECLARE_MESSAGE_MAP()
#ifdef SHARED_HANDLERS
// Вспомогательная функция, задающая содержимое поиска для обработчика поиска
void SetSearchContent(const CString& value);
#endif // SHARED_HANDLERS
};
GraphicDoc.cpp
// CGraphicDoc
IMPLEMENT_DYNCREATE(CGraphicDoc, CDocument)
BEGIN_MESSAGE_MAP(CGraphicDoc, CDocument)
END_MESSAGE_MAP()
// создание/уничтожение CGraphicDoc
CGraphicDoc::CGraphicDoc()
{
pMetaFileDC=new CMetaFileDC();
pMetaFileDC->Create();
}
Dlg.h
#pragma once
// CDlg dialog
class CDlg : public CDialog
{
DECLARE_DYNAMIC(CDlg)
public:
CDlg(CWnd* pParent = NULL); // standard constructor
virtual ~CDlg();
// Dialog Data
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
double a;
double b;
double c;
afx_msg void OnBnClickedOk();
};
Dlg.cpp
// Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "Graphic.h"
#include "Dlg.h"
#include "afxdialogex.h"
// CDlg dialog
IMPLEMENT_DYNAMIC(CDlg, CDialog)
CDlg::CDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDlg::IDD, pParent)
, a(0)
, b(0)
, c(0)
{
}
CDlg::~CDlg()
{
}
void CDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, a);
DDX_Text(pDX, IDC_EDIT2, b);
DDX_Text(pDX, IDC_EDIT3, c);
}
BEGIN_MESSAGE_MAP(CDlg, CDialog)
ON_BN_CLICKED(IDOK, &CDlg::OnBnClickedOk)
END_MESSAGE_MAP()
// CDlg message handlers
void CDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CDialog::OnOK();
}
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|