Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа

.DOC
Скачиваний:
21
Добавлен:
01.05.2014
Размер:
44.03 Кб
Скачать

Санкт-Петербургский Государственный

Электротехнический Университет

Кафедра МОЭВМ

Дисциплина: ТРПС

О Т Ч Ё Т

по лабораторной работе № 4

Выполнил:

ст. гр. 7304

Крохмаль М.И.

Преподаватель:

Самойленко В.П.

СПб

2 0 0 0

1. Цель работы

Если слово начинается и заканчивается одной и той же буквой, то удалить из него все другие вхождения этой буквы.

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

  • Основное окно программы и окно помощи унаследованы от класса CDialog, что обеспечивает простоту реализации и наглядность интерфейса.

  • В диалоговом окне используются следующие стандартные элементы:

  • Вывод в диалоговом окне приглашений и пояснений осуществлен с помощью объектов Static Text класса Cstatic, данный объект наиболее удобное средство для реализации данной задачи.

  • В качестве средства ввода данных от пользователя и вывода полученного результата используется объект Edit Box класса CEdit, т. к. они позволяют пользователю вводить и редактировать данные (а также использовать операции с буфером обмена), и в программе получать эти данные в нужном формате, а также позволяют контролировать ввод данных.

  • Для предоставления пользователю возможности управлять процессом (т.е. получить сообщение от пользователя о том, что он закончил ввод данных) используются объекты Button класса CButton – как общепринятые для этих целей объекты позволяющие осуществить обработку необходимых событий.

3. Описание созданного класса и класса mfc, наследником которого он является

На базе MFC класса CDialog был создан класс CKrugDlg, для которого были созданы (переопределены) следующие методы:

  • CKrugDlg::CKrugDlg(CWnd* pParent /*=NULL*/): CDialog(CKrugDlg::IDD, pParent) - конструктор класса CKrugDlg, включающий передачу параметров в конструктор базового класса Cdialog, и осуществляющий инициализацию членов-данных класса;

  • void CKrugDlg::OnButton2() - вызывается, когда пользователь нажмет кнопку 'Ok'; внутри метода производятся расчеты, формирование и вывод результатов соответствующих цели программы;

  • BOOL CKrugDlg::OnInitDialog() - вызывается при инициализации (перед показом) объекта KRUG_DIALOG;

а также созданы следующие члены-данные:

  • BOOL m_helpON; BOOL - флаг показывает, выведено ли окно ABOUT;

  • CEdit m_edt2; - управляющая переменная для объекта Edit Box2;

  • CEdit m_edt2; - управляющая переменная для объекта Edit Box2;

  • CEdit m_edt1; - управляющая переменная для объекта Edit Box1;

  • Cstatic m_st1 -……

Кроме того, создана и используется в методе CAnalysDlg::OnButton2() следующий экземпляр класс Cstring: OutputStr.

4. сведения о классах mfc, объекты которых используются в созданном классе

В классе CLaboneDlg использовались объекты следующих классов:

  • CButton – класс обеспечивает функциональную поддержку 'кнопок' в Windows. 'Кнопка' - может быть в двух состояниях 'нажато' и 'отпущено'. 'Кнопка' может быть использована одна или в группе и может иметь или не иметь текст.

  • CEdit – класс обеспечивает функциональную поддержку объектов Edit в Windows. Объект Edit – это объект, который может использоваться для ввода или вывода данных.

  • CStatic – класс обеспечивает функциональную поддержку объектов Static Control в Windows. Объектами Static Control обычно бывают текстовая строка, контейнер, прямоугольник, иконка, курсор, рисунок или метафайл. Этот объект обычно используется как метка, контейнер или разделитель других управляющих объектов.

5. описание используемых ресурсов

Кроме автоматически подключаемых средой программирования ресурсов были добавлены или изменены следующие:

  1. Icon (идентификатор IDR_MAINFRAME) – пиктограмма программы.

  2. Dialog (идентификатор IDD_ABOUTBOX) – диалоговое окно ABOUTBOX (было изменено в соответствии с назначением программы).

  3. Dialog (идентификатор IDD_KRUG_DIALOG) – диалоговое окно – основное окно программы.

6. Распечатка созданных и модифицированных модулей

Файл

// analysDlg.cpp : implementation file

//

#include "stdafx.h"

#include "analys.h"

#include "analysDlg.h"

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

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

protected:

DECLARE_MESSAGE_MAP()

};

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX); }

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

: CDialog(CAnalysDlg::IDD, pParent)

{ m_edit1 = _T("");

m_edit2 = _T("");

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_helpON=FALSE;}

void CAnalysDlg::DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT1, m_edit1);

DDV_MaxChars(pDX, m_edit1, 30);

DDX_Text(pDX, IDC_EDIT2, m_edit2);

DDV_MaxChars(pDX, m_edit2, 30);}

BOOL CAnalysDlg::OnInitDialog()

{ CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{ CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{ pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); }

}

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

return TRUE; // return TRUE unless you set the focus to a control }

void CAnalysDlg::OnSysCommand(UINT nID, LPARAM lParam)

{ if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{ CAboutDlg dlgAbout;

dlgAbout.DoModal(); }

else { CDialog::OnSysCommand(nID, lParam); }

}

HCURSOR CAnalysDlg::OnQueryDragIcon()

{ return (HCURSOR) m_hIcon;}

void CAnalysDlg::OnButton2()

{ CString OutputStr;

int len;

UpdateData(true);

m_edit1.TrimRight();

m_edit1.TrimLeft();

if (!(m_edit1.IsEmpty()))

{ len=m_edit1.GetLength();

OutputStr+=m_edit1[0];

for(int i=1;i<len;i++)

{if (m_edit1[i]!=m_edit1[0])

OutputStr+=m_edit1[i]; }

if (m_edit1[len-1]==m_edit1[0]) OutputStr+=m_edit1[len-1];

else OutputStr=m_edit1;

}

else OutputStr=m_edit1;

m_edit2=OutputStr;;

UpdateData(false);

}

void CAnalysDlg::WinHelp(DWORD dwData, UINT nCmd)

{ if (!m_helpON)

{ m_helpON=TRUE;

CAboutDlg help;

help.DoModal();

m_helpON=FALSE;

}

}