Создание приложений с использованием различных элементов

Изм.

Лист

№ докум.

Подпись

Дата

Лист

1

Лабораторная работа №4-5



ЛАБОРАТОРНАЯ РАБОТА № 4-5

Создание приложений с использованием различных элементов

Цель. Практическое освоение навыков создания Windows-приложений,                                                                      визуальное проектирование диалоговых панелей, однооконных и многооконных приложений,связывание элементов управления с событиями.

Программное обеспечение. ОС Windows; Visual C++

Оборудование.  ПЭВМ IBM.



Порядок выполнения работы.

Создать проект программы.

Визуально спроектировать диалоговую панель.

Связать элементы управления с событиями.

Разработать отладочные тесты.

Загрузить систему программирования  .

Создать программный модуль и запустить его на выполнение.

Выполнить отладку и получить результаты счета.

Оформить отчет, защитить лабораторную работу по контрольным вопросам и сдать преподавателю.





Содержание отчета.

Тема, цель и оборудование работы.

Индивидуальное задание.

Ход выполнения задания.

Исходные данные и протокол выполнения работы.

Выводы.





		Индивидуальные задания

 к лабораторной  работе № 5.

Создать многооконное приложение в меню которого содержится пункт «ВЫЧИСЛЕНИЯ» и соответствующая кнопка на панели инструментов. При их  выборе на экране должно появляться диалоговое окно, где согласно варианта задания по вводимых данным. Осуществляется расчет. Выбор расчета оргаанизовать с помощью кнопок или переключателей.

Вариант 5



Сумму элементов больших заданного числа;  

Произведение положительных элементов 





Код программы

// MainFrm.cpp : implementation of the CMainFrame class

//



#include "stdafx.h"

#include "L4_5.h"



#include "MainFrm.h"

#include "D.h"



#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif



/////////////////////////////////////////////////////////////////////////////

// CMainFrame



IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)



BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

	//{{AFX_MSG_MAP(CMainFrame)

	ON_WM_CREATE()

	ON_COMMAND(ID_BUTTON32771, OnButton32771)

	//}}AFX_MSG_MAP

END_MESSAGE_MAP()



static UINT indicators[] =

{

	ID_SEPARATOR,           // status line indicator

	ID_INDICATOR_CAPS,

	ID_INDICATOR_NUM,

	ID_INDICATOR_SCRL,

};



/////////////////////////////////////////////////////////////////////////////

// CMainFrame construction/destruction



CMainFrame::CMainFrame()

{

	// TODO: add member initialization code here

	

}



CMainFrame::~CMainFrame()

{

}



int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

	{

		TRACE0("Failed to create toolbar\n");

		return -1;      // fail to create

	}



	if (!m_wndStatusBar.Create(this) ||

		!m_wndStatusBar.SetIndicators(indicators,

		  sizeof(indicators)/sizeof(UINT)))

	{

		TRACE0("Failed to create status bar\n");

		return -1;      // fail to create

	}



	// TODO: Delete these three lines if you don't want the toolbar to

	//  be dockable

	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

	EnableDocking(CBRS_ALIGN_ANY);

	DockControlBar(&m_wndToolBar);



	return 0;

}



BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

	if( !CFrameWnd::PreCreateWindow(cs) )

		return FALSE;

	// TODO: Modify the Window class or styles here by modifying

	//  the CREATESTRUCT cs



	return TRUE;

}



/////////////////////////////////////////////////////////////////////////////

// CMainFrame diagnostics



#ifdef _DEBUG

void CMainFrame::AssertValid() const

{

	CFrameWnd::AssertValid();

}



void CMainFrame::Dump(CDumpContext& dc) const

{

	CFrameWnd::Dump(dc);

}



#endif //_DEBUG



/////////////////////////////////////////////////////////////////////////////

// CMainFrame message handlers





void CMainFrame::OnButton32771() 

{

CD dial;

dial.DoModal();	

}





// D.cpp : implementation file

//



#include "stdafx.h"

#include "L4_5.h"

#include "D.h"

#include "fstream.h"



#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif



/////////////////////////////////////////////////////////////////////////////

// CD dialog





CD::CD(CWnd* pParent /*=NULL*/)

	: CDialog(CD::IDD, pParent)

{

	//{{AFX_DATA_INIT(CD)

	m_1 = 0;

	m_2 = 0;

	m_sl = 0;

	m_p = 0;

	//}}AFX_DATA_INIT

}





void CD::DoDataExchange(CDataExchange* pDX)

{

	CDialog::DoDataExchange(pDX);

	//{{AFX_DATA_MAP(CD)

	DDX_Control(pDX, IDC_EDIT1, m_Edit);

	DDX_Text(pDX, IDC_EDIT1, m_1);

	DDX_Control(pDX, IDC_MSFLEXGRID1, m_GRID);

	DDX_Text(pDX, IDC_EDIT2, m_2);

	DDX_Text(pDX, IDC_EDIT3, m_sl);

	DDX_Text(pDX, IDC_EDIT4, m_p);

	//}}AFX_DATA_MAP

}





BEGIN_MESSAGE_MAP(CD, CDialog)

	//{{AFX_MSG_MAP(CD)

	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)

	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)

	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)

	//}}AFX_MSG_MAP

END_MESSAGE_MAP()

int s,p=1;



/////////////////////////////////////////////////////////////////////////////

// CD message handlers



void CD::OnButton1() 

{

UpdateData();

int c=m_1;

UpdateData(FALSE);

ofstream f("dat.txt",ios::app);

f<<c<<endl;

int sl=m_sl;

if (c>sl)

{

s+=c;

}

if(c>0)

{

p=p*c;

}

m_Edit.SetFocus(); 

	

}



void CD::OnButton2() 

{

ofstream vs("vspom.txt");

	vs<<s;

ofstream vs1("vspom1.txt");

vs1<<p;



               m_GRID.SetColWidth(0,1000);

	m_GRID.SetColWidth(1,1000);

	m_GRID.SetColWidth(2,1000);

	m_GRID.SetColWidth(3,1000);

	m_GRID.SetRow(0);

	m_GRID.SetCol(0);

	m_GRID.SetText("1 столбец ");

	m_GRID.SetCol(1);

	m_GRID.SetText("2 столбец");

	m_GRID.SetCol(2);

	m_GRID.SetText("3 столбец");

		m_GRID.SetCol(3);

	m_GRID.SetText("4 столбец");

	m_GRID.SetRow(1);

	 UpdateData();

		char str[15] ;

int i;

ifstream ff("dat.txt");

i=0;

while (!ff.eof())

{

i=i+1;

	for(int j=0;j<=3;j++)

	{

		m_GRID.SetCol(j);

		m_GRID.SetRow(i);

        ff.getline(str, sizeof(str)) ;

		m_GRID.SetText(str);

	}

   }

	

}



void CD::OnButton3() 

{

ifstream vs("vspom.txt");

vs>>s;

UpdateData();

m_2=s;

UpdateData(FALSE);

	

}



void CD::OnButton4() 

{

ifstream vs1("vspom1.txt");

vs1>>p;

UpdateData();

m_p=p;

UpdateData(FALSE);

}







Протокол выполнения программы:













Вывод: Во время выполнения данной лабораторной работы я освоил навыки создания Windows-приложений, визуального проектирования диалоговых панелей, однооконных и многооконных приложений, связывания элементов управления с событиями.