Смекни!
smekni.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5. Выводы.

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

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

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

Вариант 5

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

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

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

// 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-приложений, визуального проектирования диалоговых панелей, однооконных и многооконных приложений, связывания элементов управления с событиями.