Побудова аналітичних моделей динаміки об'єктів

Автор работы: Пользователь скрыл имя, 05 Мая 2014 в 21:00, лабораторная работа

Краткое описание

Мета роботи:
Оволодіти основними засобами створення MFC-прикладок діалогового типу у середовищіVisual C++ 5.0

Вложенные файлы: 1 файл

лаба2.docx

— 52.07 Кб (Скачать файл)

1 ПОБУДОВА АНАЛІТИЧНИХ МОДЕЛЕЙ ДИНАМІКИ ОБ'ЄКТІВ

 

1.1 Мета роботи

Оволодіти основними засобами створення MFC-прикладок діалогового типу у середовищіVisual C++ 5.0

    1. Теоретичні відомості
  1. У діалогових вікнах користувачеві надається більше можливостей для взаємодії з прикладкою. Взаємодія здійснюється за допомогою елементів керування.
  2. До основних елементів керування належать: кнопка, контрольний перемикач, селекторна кнопка, список, поле вводу, комбінований список, смуга прокрутки, статичний елемент.
  3. У MFC усі елементи керування є описаними у класах, що є похідними від CWnd. Таким чином, елементи керування мають доступ до тих самих основних функцій, що їх має будь-який елемент вікна. Практично це реалізовано за допомогою класів CButton (кнопки, селекторні кнопки та контрольні перемикачі), CEdit (поле введення), CListBox (список), CComboBox (комбінований список), CScrollBox (смуга прокрутки), CStatic (статичний елемент).
  4. Діалогові вікна у MFC подаються у модальні та немодальні формі. У модальних діалогових вікнах очікується дія з боку користувача, перше, ніж програма зможе продовжити виконання. Немодальні вікна не призупиняють роботу користувача.
  5. Діалогові вікна визначаються за допомогою класа CDialog (спадкоємець класу СWnd). Усі вікна є екземплярами CDialog або класів-спадкоємців CDialog. Звичайно, користувач породжує власні класи – нащадки CDialog.
    1. Хід роботи

1.3.1 Програмний код

// App.cpp:

#include <afxwin.h>

#include "App.h"

#include "resource.h"

 

BOOL CApp::InitInstance()

{CSampleDialog a(IDD_DIALOG3,NULL);

a.DoModal();

return TRUE;

}

CApp App;

BEGIN_MESSAGE_MAP (CSampleDialog,CDialog)

ON_COMMAND(IDC_BUTTON1,OnDialog1)

ON_COMMAND(IDC_BUTTON2,OnDialog2)

END_MESSAGE_MAP();

 

void CSampleDialog::OnDialog1()

{

CDialog1 b(IDD_DIALOG1,this);

b.DoModal();}

 

BOOL CDialog1::OnInitDialog()

{

CDialog::OnInitDialog();

ed= (CEdit*)GetDlgItem(IDC_EDIT1);

lb= (CListBox*)GetDlgItem(IDC_LIST1);

bt_add=(CButton*)GetDlgItem(IDC_BUTTON1);

bt_delete=(CButton*)GetDlgItem(IDC_BUTTON2);

bt_clear=(CButton*)GetDlgItem(IDC_BUTTON3);

return TRUE;

}

CDialog2 ml;

void CSampleDialog::OnDialog2()

{

ml.Create(IDD_DIALOG2,this);

ml.ShowWindow(SW_SHOWNORMAL);

}

void CDialog1::OnAdd()

{ char b[50];

ed->GetWindowText(b,strlen(b));

int i=lb->GetCurSel();

if(strlen(b)==0)MessageBox("ERROR!");

else

{

if (i==LB_ERR)lb-> AddString(b);

else lb->InsertString(i,b);

}}

void CDialog1::OnDelete()

{ int i=lb->GetCurSel();

if (i==LB_ERR) MessageBox ("What do you want?");

else lb->DeleteString(i);

}

void CDialog1::OnClear()

{ int i=lb->GetCount();

for (int j=0;j<i;j++)lb->DeleteString(0);

}

 

BOOL CDialog2::OnInitDialog()

{

CDialog::OnInitDialog();

ed= (CEdit*)GetDlgItem(IDC_EDIT1);

lb= (CComboBox*)GetDlgItem(IDC_COMBO1);

bt_add=(CButton*)GetDlgItem(IDC_BUTTON1);

bt_delete=(CButton*)GetDlgItem(IDC_BUTTON2);

bt_clear=(CButton*)GetDlgItem(IDC_BUTTON3);

return TRUE;

}

void CDialog2::OnAdd()

{ char b[50];

ed->GetWindowText(b,strlen(b));

int i=lb->GetCurSel();

if(strlen(b)==0)MessageBox("ERROR!");

else

{

if (i==LB_ERR)lb-> AddString(b);

else lb->InsertString(i,b);

}}

void CDialog2::OnDelete()

{ int i=lb->GetCurSel();

if (i==LB_ERR) MessageBox ("What do you want?");

else lb->DeleteString(i);

}

void CDialog2::OnClear()

{ int i=lb->GetCount();

for (int j=0;j<i;j++)lb->DeleteString(0);

}

 

BEGIN_MESSAGE_MAP (CDialog1,CDialog)

ON_COMMAND(IDC_BUTTON1,OnAdd)

ON_COMMAND(IDC_BUTTON2,OnDelete)

ON_COMMAND(IDC_BUTTON3,OnClear)

END_MESSAGE_MAP()

 

BEGIN_MESSAGE_MAP (CDialog2,CDialog)

ON_COMMAND(IDC_BUTTON1,OnAdd)

ON_COMMAND(IDC_BUTTON2,OnDelete)

ON_COMMAND(IDC_BUTTON3,OnClear)

END_MESSAGE_MAP();

 

//App.h

class CApp : public CWinApp 

{

public:

BOOL InitInstance();

};

class CMainWin : public CFrameWnd 

{

public:

CMainWin();

};

class CSampleDialog : public CDialog 

{

public:

void OnDialog1();

void OnDialog2();

CSampleDialog(UINT id, CWnd *Owner):CDialog(id,Owner){}

DECLARE_MESSAGE_MAP();

};

class CDialog1 : public CDialog 

{

private:

CButton *bt_add,*bt_delete,*bt_clear;

CEdit *ed;

CListBox *lb;

public:

void OnAdd();

void OnDelete();

void OnClear();

BOOL OnInitDialog();

CDialog1(UINT id, CWnd *Owner):CDialog(id,Owner){}

 

DECLARE_MESSAGE_MAP()

};

class CDialog2 : public CDialog 

{

public:

CButton *bt_add,*bt_delete,*bt_clear;

CEdit *ed;

CComboBox *lb;

public:

void OnAdd();

void OnDelete();

void OnClear();

BOOL OnInitDialog();

CDialog2():CDialog(){}

DECLARE_MESSAGE_MAP()

};

 

1.3.2 Візуальне структура вікна

 

Рисунок 1 – Головне вікно програми

 

 

Рисунок 2 – Немодальне вікно

 

Рисунок 3 – Модальне вікно

1.3.3 Функціонал програми

На головній формі є можливість викликати модальне та не модальне діалогове вікно по відповідним кнопкам.

У немодальному вікні є можливість заносити в елемент ListBox текст з елемента Edit за допомогою відповідних функціональних клавіш.

У модальному вікні є можливість заносити в елемент ComboBox текст з елемента Edit за допомогою відповідних функціональних клавіш.

 

 

 

 

 

 

 

 

 

 

 

 

ВИСНОВКИ

У ході виконання лабораторної роботи оволоділи основними засобами створення MFC-прикладок діалогового типу у середовищі Visual C++ 5.0

 


Информация о работе Побудова аналітичних моделей динаміки об'єктів